jquery不想要json_encode

时间:2013-04-15 10:21:34

标签: 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\/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
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(image)的结果;作为一封信; 什么是错的,我现在试了好几个小时,我非常绝望。 感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

看起来您的JSON被解释为HTML(因此当您运行它的each时,它会循环遍历HTML源的每个字符。)

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

header("Content-Type: application/json");

你也可以将dataType: "json"选项传递给ajax,这样jQuery库就会尝试将HTTP请求的结果解析为JSON,无论服务器说它是什么。在HTTP响应中拥有正确的信息是一个更清晰的解决方案。

答案 1 :(得分:1)

你应该告诉jQuery返回的数据应该是' json'使用dataType属性:

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