WordPress AJAX请求中的空/未定义返回

时间:2015-05-12 作者:Gareth Watson

在这件事上我真的需要帮助。我已经看了几个小时了,现在已经不见了。我正在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。但我得到的只是“未定义”。

我从几个不同的角度来看这一点,但几个小时后,我不得不举手。我将非常感谢这里的人们能够提供的任何帮助。

1 个回复
最合适的回答,由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, 你应该把那条线全部删除。

结束