Valeurs non mises à jour après une réponse ajax

J'envoie des données de formulaire via ajax à un script php dans la même page. PHP doit traiter les données et afficher les résultats dans la même page.

J'utilise cette syntaxe pour ajax:

$.ajax ({ type: "POST", url: "", data: $("form").serialize(), success: function(result) { updatechart(); console.log(result); } }); 

Je tente essentiellement de mettre à jour certaines valeurs dans un graphique en fonction des données saisies dans le formulaire et après avoir été traitées par un script php. Je reçois toute la source de la page lorsque je console.log(result); Et les valeurs sont mises à jour dans ma console après avoir fait cela, mais le graphique n'est pas mis à jour. Lorsque je visualise-source de la page, les valeurs restent les mêmes. Que devrais-je faire?

  function updatechart() { var json=<?php echo json_encode($GLOBALS['json']); ?>; var direct=json['direct']; var total=json['total']; var referred=total-direct; var aid=new Array(); var count=new Array(); for(var i=0;i<json['aid'].length;i++) { aid[i]=json['aid'][i]; count[i]=json['count'][i]; } var series = [{ name : "Referred", data: [referred] }, { name: "Direct", data: [direct] }]; for(var i=0; i<aid.length;i++) { series.push({ name: 'AID-'+[aid[i]], data: [count[i]] }) } var options = { chart: { renderTo: 'container', type: 'column' }, title: { text: 'User Source Chart' }, xAxis: { categories: ['Users'] }, yAxis: { min: 0, title: { text: 'Total users' } }, tooltip: { pointFormat: '<span style="color:{series.color}">{series.name}</span>: <b>{point.y}</b> ({point.percentage:.0f}%)<br/>', shared: true }, plotOptions: { column: { stacking: 'percent' } }, series: series }; chart = new Highcharts.Chart(options); } 

C'est mon code updatechart (). Le problème est que la valeur json n'est pas mise à jour.

C'est ce comportement attendu. Déplacez votre traitement PHP vers une autre page.

 $.ajax ({ type: "POST", url: "anotherphppage.php", data: $("form").serialize(), success: function(result) { updatechart(result); } }); 

Essayez ceci et vous verrez ce que je veux dire:

 <html> <head> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $('#mybutt').click(function() { $.ajax({ type: "POST", url: "", data: 'myVar=Hello', success: function(data) { alert(data); } }); }); }); //END $(document).ready() </script> </head> <body> Try this:<br /> <input type="button" id="mybutt" value="Click Me"> </body> </html> 

Passez le result en paramètre à updatechart()

 $.ajax ({ type: "POST", url: "", data: $("form").serialize(), success: function(result) { updatechart(result); } }); 

Puis accédez aux résultats via le paramètre .

 function updatechart(result) { //....... //....... console.log(result); } 

J'espère que vous essayez quelque chose comme ça.