【问题标题】:Ajax DataType: JSON respond is: OK but No output?Ajax DataType:JSON 响应是:OK 但没有输出?
【发布时间】:2014-04-09 19:14:54
【问题描述】:

好的,这是我的问题。我有一个简单的 jQuery Ajax 请求,当我将 DataType 设置为“JSON”时,我无法正常工作。

    var form_data = { "id": msg, "token": token };

    $.ajax({
        type: 'POST',
        url: "ajax.php",
        data: form_data,
        dataType: 'json',
        beforeSend:function(){
            // this is where we append a loading image
        },
        success: function(data) { 
            var thing = JSON.parse(data);
            $('.body-item').html(thing.b);
        },
        error: function() {
            alert('error');
        }
    });

这实际上是我的 ajax 文件。 ajax.php 看起来像这样:

            $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

            $foo = json_encode($arr);
            echo $foo;

当我运行 jQuery 脚本时,我得到了 Firebug 的 200:OK 响应,当我查看响应时,我得到了以下信息:{"a":1,"b":2,"c":3,"d":4,"e":5}

但是我没有在 .body-item div 中显示任何内容,也没有尝试使用 alert()。

此外,如果我运行相同的代码而不使用:dataType: 'json' 部分,我会正确输出所有内容。

这可能是什么问题?

【问题讨论】:

  • 试试 $('.body-item').html(data.b);

标签: javascript php jquery ajax json


【解决方案1】:

当您使用dataType: 'json' 时,jQuery 会调用JSON.parse() 并将结果放入data。您不应该自己调用它,因为 data 不是 JSON 字符串,它是解析后的对象。所以就这样做吧:

$('body-item').html(data.b);

来自documentation

“json”:将响应评估为 JSON 并返回一个 JavaScript 对象。

【讨论】:

  • 哦,哇,谢谢你的回答。它就像一个魅力。我从来没有想过。将在 8 分钟内被接受为答案。再次感谢您!
  • 我认为这是告诉 jQuery 期待严格的 JSON 数据类型,仅此而已。我实际上并不认为它不应该被转换。但是当我再次阅读时,它很明显。我不知道我一定在这里误解了什么。但多亏了你,现在一切都变得一清二楚了! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-03
  • 2017-05-01
  • 2021-02-05
相关资源
最近更新 更多