尽管我的JSON在jsonlint.com上进行了验证,但我还是收到了ParseError。
这是jQuery代码:
$.ajax({
url: path,
type: 'GET',
data: {},
cache: false,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
var a = 'breakpoint here doesn't activate';
},
error: function (x, y, z) {
var b = 'code execution stops at a breakpoint here.';
}
});
以下是正在调用的PHP代码:
function getAllAnswersToHitViaAjax($theJobName) {
$testData[0] = 'testing123';
$encodedData = json_encode($testData);
echo $encodedData;
return;
}
这又回到了我的.ajax调用的error:函数中设置的断点。参数Y设置为"parseerror",x.responseText=
["testing123"]
到目前为止,我已经研究了好几个小时了。我看过许多相关的StackOverflow帖子,但没有一个能在这种情况下工作的解决方案。
如何从这个.ajax调用中获得成功响应?
提前非常感谢所有人提供任何信息。
您的代码没有明显的问题,当我在本地机器上尝试时,它运行良好。然而,你上面的评论是一个很大的线索:
我只是查看了Safari控制台中的z参数,发现:"undefined不是一个函数(评估'JSON.parse(a+")')"这怎么会发生?
如果某个地方的某些代码使用"JSON"作为全局变量名,从而隐藏内置窗口,则可能会发生这种情况。JSON对象。
检查php代码中的Notice或Warning,如果有,请删除它们,然后重试。跳吧,这对你有帮助。
JavaScript允许字符串使用单引号或双引号,但JSON仅允许使用双引号。看见http://www.json.org/
另请参阅jQuery.parseJSON单引号与双引号
只需使用
function getAllAnswersToHitViaAjax($theJobName) {
$testData[0] = 'testing123';
echo json_encode($testData);
}
然后在你的AJAX你可以做
$.ajax({
url: path,
type: 'GET',
dataType: 'json'
success: function(data){
for (var i = 0; i < data.length; i++) {
//DO YOUR STUFF
}
}
});
请使用
$.ajax({
url: path,
type: 'GET',
cache: false,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
var a = 'breakpoint here doesn''t activate';
},
error: function (x, y, z) {
var b = 'code execution stops at a breakpoint here.';
}
});
并在您的PHP代码中粘贴此代码。
function getAllAnswersToHitViaAjax($theJobName) {
$testData[0] = 'testing123';
$encodedData = $testData;
echo json_encode($encodedData);
exit;
}
可能是在你的代码中挖掘了更多之后,我认为在你的PHP代码中你没有正确地传递数据。请使用exit或die方法将数据传递回ajax。请检查。
Try with the below code,
function getAllAnswersToHitViaAjax($theJobName) {
$testData[0] = 'testing123';
echo json_encode($testData);
die();
}
$.ajax({
url: path,
type: 'GET',
dataType: 'json'
success: function(data){
console.log(data);
var result = JSON.parse(data);
console.log(result);
}
});