我有一个调用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"
答案 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检查或通过始终检查所有函数的返回值。