我通过ajax将某些表单数据发送到同一页面中的php脚本。PHP必须处理数据并在同一页面上显示结果。
我正在为ajax使用以下语法:
$.ajax ({ type: "POST", url: "", data: $("form").serialize(), success: function(result) { updatechart(); console.log(result); } });
我基本上是在尝试根据表格中输入的数据并由php脚本处理后的数据来更新图表中的某些值。执行此操作后,我会获得页面的整个来源,console.log(result);并且在执行此操作后会在控制台中更新值,但图表不会更新。当我查看源页面时,值保持不变。我该怎么办?
console.log(result);
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); }
这是我的updatechart()代码。问题是,json值未更新。
那是预期的行为。将您的PHP处理移至其他页面。
$.ajax ({ type: "POST", url: "anotherphppage.php", data: $("form").serialize(), success: function(result) { updatechart(result); } });
试试这个,你会明白我的意思的:
<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>