jQuery.ajax返回错误:带有错误消息的意外令牌:parseerror?

时间:2011-09-14 17:01:35

标签: php jquery

我有一个调用php脚本的jquery.ajax例程。 php脚本在Google搜索API上进行查找,并将json返回给调用的ajax脚本。

该脚本在99%的安装上都能正常工作,但是,当我打电话时,这个脚本可以正常工作:

error: function(jqXHR, textStatus, errorThrown){
alert('HTTP Error: '+errorThrown+' | Error Message: '+textStatus);
}

它返回:

  

HTTP错误: SyntaxError:意外的令牌< |错误信息:   的 parsererror

如何使用javascript控制台或chrome开发人员工具对此进行问题排查?代码存根低于......

var result='';
jQuery.ajax
({
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    url: <?php  echo '"' .plugins_url('/script.php', __FILE__); ?>?Query="+ jQuery('#search_keyword').val(),
    success: function(data)
    {       
        //do something with results
    },

    error: function(jqXHR, textStatus, errorThrown){
        console.log(arguments);
        alert('HTTP Error: '+errorThrown+' | Error Message: '+textStatus);
        return;
    }
});

更新:Console.log的OBJECT错误显示为:

responseText: "<br />↵<b>Warning</b>:  array_map() [<a href='function.array-map'>function.array-map</a>]: Argument #2 should be an array in <b>/filepath/wp-content/plugins/test/test.php</b> on line <b>75</b><br />↵<br />↵<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/filepath/wp-content/plugins/test/test.php</b> on line <b>90</b><br />↵No Records Returned. Search may be down. Wait a few minutes"

2 个答案:

答案 0 :(得分:11)

你可能已经将HTML返回到JSON不应该的位置。

在提醒之前尝试console.log(arguments);以查看返回的内容

答案 1 :(得分:0)

这告诉你问题在哪里

responseText: "<br />↵<b>Warning</b>:  array_map() [<a href='function.array-map'>function.array-map</a>]: Argument #2 should be an array in <b>/filepath/wp-content/plugins/test/test.php</b> on line <b>75</b><br />↵<br />↵<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/filepath/wp-content/plugins/test/test.php</b> on line <b>90</b><br />↵No Records Returned. Search may be down. Wait a few minutes"

在某些安装中,由于error_reporting设置不同

,因此它的行为方式会有所不同

在生产环境中,错误报告应该关闭,但根据经验,您的代码不应发出任何警告或通知。

在任何情况下,您都应该更好地处理错误,尤其是在

Argument #2 should be an array in /filepath/wp-content/plugins/test/test.php on line 75
Invalid argument supplied for foreach() in /filepath/wpcontent/plugins/test/test.php on line 90

这两个警告都是由于您的变量不是数组(可能是false或null)引起的,通常可以在访问数组之前使用is_array检查或通过始终检查所有函数的返回值。