代码之家  ›  专栏  ›  技术社区  ›  hamburger

jquery不需要json_encode

  •  0
  • hamburger  · 技术社区  · 13 年前

    我有一个问题,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(图像)的结果;作为一个单独的字母; 怎么了,我已经试了好几个小时了,我很失望。 感谢您提前提供的帮助。

    2 回复  |  直到 13 年前
        1
  •  2
  •   Quentin    13 年前

    看起来您的JSON被解释为HTML(所以当您运行 each 其中,它在HTML源代码的每个字符上循环)。

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

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

    你也可以通过 dataType: "json" 选项 ajax 因此,无论服务器说什么,jQuery库都会尝试将HTTP请求的结果解析为JSON。不过,在HTTP响应中包含正确的信息是一个更干净的解决方案。

        2
  •  1
  •   Damien Legros    13 年前

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

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