Php jqueryajax可以';无法使用JSON响应
我的php文件中有一个JSON响应,如:Php jqueryajax可以';无法使用JSON响应,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我的php文件中有一个JSON响应,如: [ {"id":"1"}, {"archiveitem":"<small>26.06.2015 12:25<\/small><br \/><span class=\"label label-default\">Bug<\/span> has been submitted by Admin"} ] [ {“id”:“1”}, {“archiveitem”:“26.06.2015 12:2
[
{"id":"1"},
{"archiveitem":"<small>26.06.2015 12:25<\/small><br \/><span class=\"label label-default\">Bug<\/span> has been submitted by Admin"}
]
[
{“id”:“1”},
{“archiveitem”:“26.06.2015 12:25
管理员已提交错误”}
]
并尝试在单击按钮后将此响应提取到div中,但是firebug告诉我错误处理程序发出的消息。我搞不懂这个问题
$('#loadarchive').click(function(){
$.ajax({
type: 'post',
url: '/src/php/LoadAdminDashboardArchive.php',
dataType: 'json',
data: {
action : 'getArchive'
},
success: function(results) {
var archiveelements = JSON.parse(results);
console.log(results);
$.each(archiveelements, function(){
$('#archivecontent').html('<div class="mark-read-container"><span class="btn-mark-unread" id="' + this.id + '">Unarchive</span></div><div class="bs-callout bs-callout-default">' + this.archiveitem + '</div>');
});
},
error: function(){
console.log('Cannot retrieve data.');
}
});
});
$('loadarchive')。单击(函数(){
$.ajax({
键入:“post”,
url:“/src/php/LoadAdminDashboardArchive.php”,
数据类型:“json”,
数据:{
操作:“getArchive”
},
成功:功能(结果){
var archiveelements=JSON.parse(结果);
控制台日志(结果);
$.each(archiveelements,function(){
$('#archivecontent').html('Unarchive'+this.archiveitem+'');
});
},
错误:函数(){
log('无法检索数据');
}
});
});
如果您深入了解控制台,可以从控制台获得更多信息。或者通过记录这两个参数:
error: function(xhr, mssg) {
console.log(xhr, mssg);
}
我试着运行你的代码,结果
SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data
通过定义数据类型:“json”
您的结果已经被解析为数组。因此,您可以执行以下操作:
success: function (results) {
if (results["head"]["foo"] != 0) {
// do something
} else if (results["head"]["bar"] == 1) {
// do something
}
}
这在我的计算机上工作:
$.ajax({
type: 'post',
url: '/src/php/LoadAdminDashboardArchive.php',
dataType: 'json',
data: { action : 'getArchive' },
success: function(results) {
console.log(results);
$.each(results, function(){
$('#archivecontent').html('<div class="mark-read-container"><span class="btn-mark-unread" id="' + this.id + '">Unarchive</span></div><div class="bs-callout bs-callout-default">' + this.archiveitem + '</div>');
});
},
error: function(){
console.log('Cannot retrieve data.');
}
});
$.ajax({
键入:“post”,
url:“/src/php/LoadAdminDashboardArchive.php”,
数据类型:“json”,
数据:{操作:'getArchive'},
成功:功能(结果){
控制台日志(结果);
$.each(结果,函数(){
$('#archivecontent').html('Unarchive'+this.archiveitem+'');
});
},
错误:函数(){
log('无法检索数据');
}
});
首先
你的回答不正确,正确的回答应该是这样的
[{
"id":"1",
"archiveitem":"<small>26.06.2015 12:25<\/small>
<br \/><span class=\"labellabel-default\">Bug<\/span> has been submitted by Admin"
},
{
...
}]
正如您所说,显示的是来自错误处理程序的消息 这意味着,由于URL不正确或任何其他原因,AJAX永远不会发送到服务器 在Firefox中使用Firebug,并在控制台选项卡中查看错误 我也看到了你的代码
dataType: 'json',
data: { action : 'getArchive' },
success: function(results) {
var archiveelements = JSON.parse(results);
}
不要使用
JSON.parse(results)
,因为您已经编写了数据类型:'JSON',
,并且任何类型的响应都会自动解析。我能够让它工作,问题很简单
我忘了粘贴“按钮”——启动ajax请求的源代码。它是“提交”类型的输入,因此在成功检索响应后,默认情况下重新加载页面。。。因此,e.预防违约();这就是路
感谢大家。如果命中错误处理程序,则表示服务器的响应不是
200 OK
。这意味着您的responseURL
位置有错误。事实上,如果responseURL
是一个变量,您应该删除它周围的引号。此响应的HTTP状态代码是什么?哇,太快了:-)我对firebug不太熟悉,但它似乎没有给出任何响应。。。responseURL不是一个变量,它只是/src/php/LoadAdminDashboardArchive.phpI很抱歉,上面的代码已经更改了。哦,我不知道。。。它给了我:Object{readyState=0,status=0,statusText=“error”,mehr…}error什么工具给了你那个“语法错误”?我在firebug中看不到这一点。。即使使用您的代码,我也会得到:readyState 0 ResponseJSON undefined status 0 statusText“error”我使用Firebug 2.0.11进行调试并在Firebug控制台上收到此消息您的/src/php/LoadAdminDashboardArchive.php
-文件中可能存在错误,当您直接调用该URL时会得到什么响应?当删除“isset”时处理php文件并打开url,然后我得到上面提到的json格式…你有什么“isset”吗?好的,我同意json响应的格式不正确,我更改了它,现在是:[{“id”:“1”,“archiveitem”:“26.06.2015 12:25管理员提交了Bug”}我还更改了jquery部分,但错误仍然是一样的…@qhalix89在开发者工具中使用网络选项卡并检查请求是否返回正确响应在firefox开发者工具中使用网络选项卡时,单击按钮似乎只是将请求发送到当前页面,而不是我的php json响应文件
dataType: 'json',
data: { action : 'getArchive' },
success: function(results) {
var archiveelements = JSON.parse(results);
}