Php jquery不需要json_编码

Php jquery不需要json_编码,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我的问题是jquery不需要我的json 以下是我的jquery代码: $.ajax({ type: "POST", url: "js/resize.php", data: data, success: function(data) { /* works var data = [ {"og_src":"img\

我的问题是jquery不需要我的json

以下是我的jquery代码:

        $.ajax({
            type: "POST",
            url: "js/resize.php",
            data: data,
            success: function(data) {       

/* works
          var data = [
                    {"og_src":"img\/base\/logo.png","src":"img\/base\/das-logo.png"},
                    {"og_src":"\/img\/studio\/lounge-2.JPG","src":"\/img\/studio\/lounge-2.JPG"},
                    {"og_src":"\/img\/studio\/desk.JPG","src":"\/img\/studio\/desk.JPG"}
                    ];

*/

    // console.log(data);
                $.each(data, function(key, image){
                 console.log(image);
                    var el = $("img[rel='"+image.og_src+"']");
                    ...
如果我将发送的数据复制到脚本中,并生成一个var data=。。。它很好用

php数据由一个简单的echo json_encode($stack)生成

如果我做一个php回音,比如

echo '[{"og_src":"img\/base\/logo.png","src":"img\/base\/das-logo.png"}, {"og_src":"\/img\/studio\/lounge-2.JPG","src":"\/img\/studio\/lounge-2.JPG"}, {"og_src":"\/img\/studio\/desk.JPG","src":"\/img\/studio\/desk.JPG"}]';
它不起作用

所有文件都在UTF-8上

Console.log显示Console.log的结果(图像);作为一封信; 怎么了,我已经试了好几个小时了,我非常绝望。
提前感谢您的帮助。

看起来您的JSON被解释为HTML(因此,当您运行它的每个时,它会在HTML源代码的每个字符上循环)

确保您的PHP脚本说它正在输出JSON(PHP默认为HTML)


您还可以将
数据类型:“json”
选项传递给
ajax
,这样jQuery库将尝试将HTTP请求的结果解析为json,而不管服务器说它是什么。不过,在HTTP响应中包含正确的信息是一个更干净的解决方案。

看起来您的JSON被解释为HTML(因此,当您运行它的每个时,它会在HTML源代码的每个字符上循环)

确保您的PHP脚本说它正在输出JSON(PHP默认为HTML)


您还可以将
数据类型:“json”
选项传递给
ajax
,这样jQuery库将尝试将HTTP请求的结果解析为json,而不管服务器说它是什么。不过,在HTTP响应中包含正确的信息是一个更干净的解决方案。

您应该告诉jQuery,使用dataType属性返回的数据应该是“json”:

$.ajax({
        type: "POST",
        url: "js/resize.php",
        data: data,
        dataType: 'json',
        success: function(data) { 
    }
});

您应该使用dataType属性告诉jQuery,返回的数据应该是“json”:

$.ajax({
        type: "POST",
        url: "js/resize.php",
        data: data,
        dataType: 'json',
        success: function(data) { 
    }
});

您可以尝试指定
数据类型:“json”
。Thx Jack,我做了几次,都没有指定数据类型:“json”。而且一直都是正确的。我现在加上去了。而且效果很好。我不知道它过去为什么会起作用,但这是我的解决方案。然后你缺少了昆汀提到的正确的
内容类型
响应头。你可以尝试指定
数据类型:'json'
。Thx Jack,我做了几次,都没有指定数据类型:'json'。而且一直都是正确的。我现在加上去了。而且效果很好。我不知道为什么它在过去有效,但这是我的解决方案。然后,您缺少了昆汀提到的正确的
内容类型
响应头。thx昆汀数据类型:“json”适合我。我试图找出它过去为什么有效。根据你的建议,我得到了同样的结果。echo json_编码($stack);标题(“内容类型:application/json”);但肯定是错误的,因为console.log仍将结果解释为html。所以我们走对了。您必须在HTTP主体之前输出HTTP头。当你这样做的时候,你应该会收到错误消息;如果我以另一种方式执行此操作,则会收到错误消息header Cannot modify header information(标题无法修改标题信息)-标题已由我发送:是bom问题。Thanksthx Quentin数据类型:“json”适合我。我试图找出它过去为什么有效。根据你的建议,我得到了同样的结果。echo json_编码($stack);标题(“内容类型:application/json”);但肯定是错误的,因为console.log仍将结果解释为html。所以我们走对了。您必须在HTTP主体之前输出HTTP头。当你这样做的时候,你应该会收到错误消息;如果我以另一种方式执行此操作,则会收到错误消息header Cannot modify header information(标题无法修改标题信息)-标题已由我发送:是bom问题。谢谢