在这件事上我真的需要帮助。我已经看了几个小时了,现在已经不见了。我正在WordPress中使用ajax,这是我第一次这样做。
我的代码中有一个函数,它通常以以下内容结尾:
echo json_encode($aData);
然后,我的js文件中的代码编写如下:
jQuery.ajax({
url: "path/to/admin-ajax.php", //AJAX file
// dataType: \'json\',
type: \'POST\',
// contentType: \'application/json\',
data: { action: "process_chart_data" },
success: function(chartData) {
//Code, that need to be executed when data arrives after
// successful AJAX request execution
console.log("SUCCESS");
console.log(chartData);
}
});
您将注意到上述代码中的注释。当我在控制台中查看chartData时,我得到以下信息:
{"title":"R=3+","dates":["06\\/04\\/2014","11\\/05\\/2014","15\\/06\\/2014","27\\/07\\/2014","17\\/08\\/2014","28\\/09\\/2014","05\\/10\\/2014","19\\/10\\/2014","09\\/11\\/2014","23\\/11\\/2014","14\\/12\\/2014"],"series":[{"data":[[1396738800000,284],[1399762800000,350],[1402786800000,212],[1406415600000,296],[1408230000000,220],[1411858800000,253],[1412463600000,200],[1413673200000,310],[1415491200000,180],[1416700800000,156],[1418515200000,290]],"name":"Bulls"}]}0
但是,当我取消对dataType和contentType的注释时,会输出一个0。
我的问题是,我正在尝试访问返回数组的属性,如chartData。但我得到的只是“未定义”。
我从几个不同的角度来看这一点,但几个小时后,我不得不举手。我将非常感谢这里的人们能够提供的任何帮助。
最合适的回答,由SO网友:webtoure 整理而成
我不确定您提供的输出是否正确,但您是否注意到字符串末尾的“0”字符?
{"title":"R=3+","dates":["06\\/04\\/2014","11\\/05\\/2014","15\\/06\\/2014","27\\/07\\/2014","17\\/08\\/2014","28\\/09\\/2014","05\\/10\\/2014","19\\/10\\/2014","09\\/11\\/2014","23\\/11\\/2014","14\\/12\\/2014"],"series":[{"data":[[1396738800000,284],[1399762800000,350],[1402786800000,212],[1406415600000,296],[1408230000000,220],[1411858800000,253],[1412463600000,200],[1413673200000,310],[1415491200000,180],[1416700800000,156],[1418515200000,290]],"name":"Bulls"}]}0
这足以导致JSON解析器失败。
另外,不要使用contentType
像这样的财产you don\'t send any JSON, 你应该把那条线全部删除。