【问题标题】:JSON data format when attaching to variable附加到变量时的 JSON 数据格式
【发布时间】:2015-04-12 03:48:35
【问题描述】:

我正在尝试从我已经设置好的 JSON 格式的 PHP 调用中取回数据。当我回显 JSON 数据以正确的格式返回时

我正在尝试处理数据并将它们发送到输入字段。如果我手动将 JSON 数据添加到我的 jQuery 脚本中,它可以正常工作,但如果我尝试从 AJAX 调用调用返回的数据,它就不起作用,即使数据的结构相同。

这是有效的

success: function(data) {
    var myobj = {"title":"botskonet"}

    for( k in myobj ){
        alert(myobj[k]);
        document.getElementById(k).value = myobj[k];
    }
}

但是如果我用这个就不行了

success: function(data) {
    var myobj = data <--which if I echo it looks like this {"title":"botskonet"}

    for( k in myobj ){
        alert(myobj[k]);
        document.getElementById(k).value = myobj[k];
    }
}

如果我从数据返回中回显 JSON 调用,这与手动调用相同。

{"title":"botskonet"}

所以我不确定手动编写 JSON 调用与从 AJAX 中调用它之间有什么区别,以及为什么它不起作用。

【问题讨论】:

  • 请尝试JSON.parse(data)。另外请发布您的 PHP 如何序列化 JSOn 数据以返回给客户端。
  • 做到了,谢谢我把我的代码改成这个var myobj = JSON.parse(data)
  • 已发布答案。很高兴我能帮上忙。
  • @CesarBielich 如果回答对您有帮助,您应该接受 LimH 的回答。

标签: jquery json


【解决方案1】:

您从 PHP 返回的是 JSON 格式的字符串,因此您需要在客户端使用 JSON.parse(data); 对其进行解析,以将其转换为 JavaScript 对象。

【讨论】:

    【解决方案2】:

    虽然您没有发布整个代码,但我假设您正在使用 Jquery 中的一种可用方法来发出 AJAX 请求。您可以在此类方法中指定dataType 参数,该参数基本上用于声明您期望从服务器获得的数据类型。

    这是一个例子:

    $.ajax({
      type: "POST",
      url: <your-request-url>,
      data: <your-data>,
      success: function(){ ... },
      dataType: "json"
    });
    

    更多详情:https://api.jquery.com/jquery.post/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      • 2022-01-11
      • 1970-01-01
      相关资源
      最近更新 更多