【问题标题】:JSON object properties are undefinedJSON 对象属性未定义
【发布时间】:2012-08-26 07:04:21
【问题描述】:

我从 AJAX 调用返回一个 JSON 对象并记录如下结果:

console.log(response);

这是控制台中记录的响应:

{"filename":"new.jpg","orientation":"vertical"}

但是,当我

console.log(response.orientation);

我得到一个未定义的响应。

我读过的大多数答案都表明返回了一个数组而不是一个对象,并且 response[0].orientation 应该可以工作,但这里的情况并非如此。当我将相同的数组分配给控制台中的另一个变量时:

var obj = {"filename":"new.jpg","orientation":"vertical"}

那么 obj.orientation 返回正确的值。

我正在 PHP 中创建 JSON 对象:

$response=array('filename' => $newfilename, 'orientation' => $orientation);
$response=json_encode($response);
echo $response;

属性显示未定义的原因是否明显?

【问题讨论】:

  • 如果您的响应是一个字符串,您必须先将其传递给JSON.parse,然后才能访问属性。还有,there's no such thing as a JSON object
  • 你能把你的代码发布给你如何发送ajax请求和成功函数

标签: php javascript ajax json undefined


【解决方案1】:

要么放:

header("Content-type: application/jason");

在 PHP 中,在 JavaScript 中的 AJAX 调用中指定 dataType: "json",或者调用 JSON.parse

【讨论】:

  • JSON.parse(或 jQuery 中的 $.parseJSON)成功了。我不知道为什么我阅读的几个教程中没有...谢谢!
  • 似乎是一个普遍的问题,几乎每一天我们都没有看到有人提出基本相同的问题。
【解决方案2】:

您需要解析您的字符串以获得正确的 JSON 对象。 JSON.parse(响应); 将为您提供一个 JSON 对象,您可以从中读取属性

【讨论】:

    【解决方案3】:

    你能在 jsfiddle 中试试下面的例子吗?

    这不是使用 JSON.parse() 的更好方法;或 $.parseJSON(); (jquery 版本)

    但如果这是你的问题,json 会作为字符串返回,这样可以修复它,你可以修改你的代码

    http://jsfiddle.net/dadviegas/gf8Yq/

    【讨论】:

      【解决方案4】:

      我认为 ajax / php 部分应该是这样的 阿贾克斯

      $.ajax({
              type: "POST",   
              url: "link.php",
              dataType: "json",
              success: function(result){
                   alert(result.orientation); 
              }
          });
      

      PHP

      $response=array("filename" => "$newfilename", "orientation" => "$orientation");
      $response=json_encode($response);
      echo $response;
      

      确保使用至少 5.2 php 版本

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-24
        • 2016-08-03
        • 1970-01-01
        • 2015-12-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多