Ajax 成功回调从未执行,解析器错误
Ajax success callback never executed, parsererror
我正在对服务器端PHP脚本进行简单的AJAX调用,但从未执行过成功回调。相反,在错误回调下,我得到错误"解析器错误"。我已经搜索了堆栈溢出并尝试了所有方法,但没有任何效果。
如果我尝试将 URL 加载到带有相关字段的 PHP 脚本,在本例中为 http://....../matching.php?cmd=generate&N=2&M=3
,我将获得返回的 JSON 格式的正确数据。例如
{"N":"2","M":"3","E":[[1,1,39],[0,3,100],[2,1,50]]}
阿贾克斯呼叫
$('form').on('submit', function(event) {
event.preventDefault();
$.ajax({
url: 'matching.php',
dataType: 'json',
contentType: 'json',
type: 'GET',
data: {
cmd: "generate",
N: $('#n1').val(),
M: $('#n2').val()
},
success: function(data) {
alert(data);
leftCount = data.N;
rightCount = data.M;
returnedArray = data.E;
generateFirstPage();
},
error: function(request,error) {
alert(request.responseText);
alert(error);
}
});
})
.PHP
<?php
if (isset($_GET['cmd'])) {
$n = $_GET["N"];
$m = $_GET["M"];
echo json_encode(generateEdges($n, $m));
exit;
}
function generateEdges($n, $m) {
$edgeNumber = rand($n,$n*2);
$e = array();
for($i=0; $i<$edgeNumber; $i++) {
array_push($e, array(rand(0,$n), rand(0,$m), rand(1,100)));
}
return $finalArray = array('N' => $n, 'M' => $m, 'E' => $e);
}
?>
做一个console.log(request.reponseText)
会给
{"N":"2","M":"3","E":[[1,0,42],[1,3,48],[0,3,44],[0,0,8]]}
我相信
错误在于您的 AJAX 调用实际上并没有命中您的matching.php
文件。我将您的代码复制到我自己的 2 个文件中,其中 1 个包含 HTML 和 javascript(尽管我确实用 $(document).ready(function() { ... })
包装了 javascript,但这似乎不是您的问题)。
当我点击提交,调用我自己的"匹配.php"但将该文件留空时,我得到的parsererror
与您提到的相同。如果我有匹配.php执行您提供的代码,它达到了成功条件,一切都很好。我认为问题不在于PHP甚至你的javascript,不一定只是它正在寻找matching.php
的地方。
使用 Firebug 或 Chrome 的开发者 JavaScript 控制台查看 ajax 网络调用,看看它是否真的命中了它。这可能只是不同问题的症状,但值得仔细检查,imo。
相关文章:
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- 试图在Windows上执行package.json中的脚本会引发JScript错误
- Visual Studio代码未在Javascript中执行错误检查
- LABjs错误:脚本总是使用.script()来执行加载的序列
- Javascript执行顺序错误
- AJAX 请求不会在 400 个错误查询上执行失败
- 未捕获的类型错误:无法在“CanvasRenderingContext2D”上执行“getImageData”:提供的双
- Javascript Sencha cmd 应用程序构建错误发生在执行此行时
- 最后,在 rxjs 序列上,在第一个错误时执行
- 收到错误:无法在“节点”上执行“appendChild”:参数 1 的类型不是“节点”
- 强制PhantomJS执行JavaScript错误
- 错误:无法在“XMLHttpRequest”上执行“发送”:无法加载“文件”:AngularJS SPA
- 1.js:23未捕获类型错误:执行'失败;appendChild'在'节点':参数1不是
- 对ajax错误执行javascript函数
- 角度 - 如何对不同类型的错误执行动态警报
- node.js错误:执行命令行命令时产生ENOSYS
- 未捕获类型错误:执行失败'readAsBinaryString'on 'FileReader
- 未捕获的类型错误:执行失败'on 'FileReader':参数1不是'Blob'
- 数据表错误'执行appendChild()失败'
- 未捕获的类型错误:执行失败'importStylesheet'on 'XSLTProcessor