Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jqueryajax可以';无法使用JSON响应_Php_Jquery_Ajax_Json - Fatal编程技术网

Php jqueryajax可以';无法使用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

我的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: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);
}