不能将PHP生成的JSON读入我的javascript

时间:2014-02-23 01:30:00

标签: javascript php jquery ajax json

我使用AJAX请求返回JSON的php文件

$.ajax({ url: 'php/invoice.php',
         dataType: "json",
         data: {id: 1},
         type: 'post',
         success: function(response) {
            alert(response);
         }
});

使用的php文件是通过json_encode回显json:

while($row = mysqli_fetch_assoc($result))
{
   $queryResults[] = $row;
}
echo json_encode($queryResults);

php发回的一个例子是:

  

[{ “ID”: “1”, “姓名”: “布伦特”, “姓”: “Doe的”, “电话”: “888888888”, “拉链”: “11111”}]

当我发出警报(响应)时,我得到的是“[对象]”

我想要的是提醒json中的名字或任何其他属性,即。 “布伦特”

我试过警报(response.firstname);它以未定义的形式返回。

iv'e还尝试从ajax请求中删除dataType:“json”,并在通过var obj = $ .parseJSON(response)和alert(obj.firstname)返回时解析json

我不知道我做错了什么,当我使用json编码时,我也不知道为什么在json周围有[]。我假设它,因为它从json对象返回一个数组,这可能是我的问题?我是新手,非常感谢任何帮助或资源!

我做了几个小时的研究,仍然无法找到答案。提前谢谢!

2 个答案:

答案 0 :(得分:1)

问题出在这里(正如 @echeese 首先指出的那样)

while($row = mysqli_fetch_assoc($result))
{
   $queryResults[] = $row;
}
echo json_encode($queryResults);

注意JSON的外观(注意[..]?)

[{"id":"1","firstname":"Brent","lastname":"Doe","telephone":"888888888","zip":"11111"}]

它转化为:

0 => {"id":"1","firstname":"Brent","lastname":"Doe","telephone":"888888888","zip":"11111"}

你需要像这样访问它:

response[0].firstname

答案 1 :(得分:0)

您遇到的问题是您的响应正在返回一个对象数组。您应该可以使用response[0].firstname

获取名字