0

我有 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) 的结果;作为一个字母;怎么了,我现在尝试了几个小时,我非常绝望。提前感谢您的帮助。

4

2 回答 2

2

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

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

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

您还可以将dataType: "json"选项传递给,ajax以便 jQuery 库尝试将 HTTP 请求的结果解析为 JSON,无论服务器说什么。不过,在 HTTP 响应中包含正确的信息是一种更简洁的解决方案。

于 2013-04-15T10:27:45.177 回答
1

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

$.ajax({
        type: "POST",
        url: "js/resize.php",
        data: data,
        dataType: 'json',
        success: function(data) { 
    }
});
于 2013-04-15T10:29:00.673 回答