Php getJSON返回JSON,但可以';t通过result.key访问
使用Php getJSON返回JSON,但可以';t通过result.key访问,php,jquery,json,Php,Jquery,Json,使用$.getJSON(url).done(函数(数据){})调用REST服务器返回此 [ "{" id":1, "medname":"Medication No. 1", "qty":"2", "pDay":"3", "beforeAfterMeal":null }", "{ "id":3, "medname":"Medication No. 2", "qty":"1", "pDay":"1", "beforeAfterMeal"
$.getJSON(url).done(函数(数据){})调用REST服务器代码>返回此
[
"{" id":1,
"medname":"Medication No. 1",
"qty":"2",
"pDay":"3",
"beforeAfterMeal":null
}", "{
"id":3,
"medname":"Medication No. 2",
"qty":"1",
"pDay":"1",
"beforeAfterMeal":null
}", "{
"id":4,
"medname":"Medication 3",
"qty":"4",
"pDay":"1",
"beforeAfterMeal":null
}
]
从console.log进入Chrome
通过使用$.each()我可以循环3次(因此它知道JSON数组中有3个条目),但是当我使用
数据[1].id
或数据[1].medname
或任何键,它会给我未定义的或null
我的疑问是,返回的JSON数组是否正确?它是从json_encode()(PHP)返回的,所以我假设它是正确的
另外,我尝试了$.parseJSON()
,但没有结果
也许我看错地方了?指针将大有帮助
这是服务器的原始返回值(在json_encode()之后):
以上是正确的吗?如果不是的话,我想知道哪一部分是错的
更新
我想我已经到了犯错误的地方了
以下是服务器中发生的情况,对于每个条目,它们都使用json\u encode()
单独编码,并添加到数组中。最后,再次使用json\u encode()对数组进行编码
这里是数组的var_转储,在我显式调用json_encode(数组)之前代码>
这就是错误所在吗?我是否应该先对每个条目单独编码/ 在php代码中使用:
<?php
$c = array(array("id"=>1,
"medname"=>"Medication No. 1",
"qty"=>"2",
"pDay"=>"3",
"beforeAfterMeal"=>null),
array("id"=>3,
"medname"=>"Medication No. 2",
"qty"=>"1",
"pDay"=>"1",
"beforeAfterMeal"=>null));
echo json_encode($c, JSON_FORCE_OBJECT);
?>
然后你可以用
$.getJSON(url).done(function(data) {
alert(data[0].id);
});
JSFIDLE在php代码中使用:
<?php
$c = array(array("id"=>1,
"medname"=>"Medication No. 1",
"qty"=>"2",
"pDay"=>"3",
"beforeAfterMeal"=>null),
array("id"=>3,
"medname"=>"Medication No. 2",
"qty"=>"1",
"pDay"=>"1",
"beforeAfterMeal"=>null));
echo json_encode($c, JSON_FORCE_OBJECT);
?>
然后你可以用
$.getJSON(url).done(function(data) {
alert(data[0].id);
});
JSFIDLE如果从服务器获取字符串值,则需要对其进行解析以获取对象:
$.getJSON(url).done(function(data) {
var obj = JSON.parse(data);
var obj1 = obj[0];
// and so on
});
如果从服务器获取字符串值,则需要对其进行解析以获取对象:
$.getJSON(url).done(function(data) {
var obj = JSON.parse(data);
var obj1 = obj[0];
// and so on
});
好的,总结一下
这里的错误是,您在数组中的所有元素上运行了json\u encode
,然后在整个数组上再次运行了json\u encode
。您应该只在整个阵列上运行一次
走错了路
$arr[] = json_encode(array('name' => 'hank'));
$arr[] = json_encode(array('name' => 'jofryhs'));
echo json_encode($arr);
$arr = array(
array('name' => 'hank'),
array('name' => 'jofryhs')
);
echo json_encode($arr);
结果:[“{\'name\”:“hank\”},“{\'name\”:“jofryhs\”}]
正确的方法
$arr[] = json_encode(array('name' => 'hank'));
$arr[] = json_encode(array('name' => 'jofryhs'));
echo json_encode($arr);
$arr = array(
array('name' => 'hank'),
array('name' => 'jofryhs')
);
echo json_encode($arr);
结果:[{“name”:“hank”},{“name”:“jofryhs”}]
总而言之,是的
这里的错误是,您在数组中的所有元素上运行了json\u encode
,然后在整个数组上再次运行了json\u encode
。您应该只在整个阵列上运行一次
走错了路
$arr[] = json_encode(array('name' => 'hank'));
$arr[] = json_encode(array('name' => 'jofryhs'));
echo json_encode($arr);
$arr = array(
array('name' => 'hank'),
array('name' => 'jofryhs')
);
echo json_encode($arr);
结果:[“{\'name\”:“hank\”},“{\'name\”:“jofryhs\”}]
正确的方法
$arr[] = json_encode(array('name' => 'hank'));
$arr[] = json_encode(array('name' => 'jofryhs'));
echo json_encode($arr);
$arr = array(
array('name' => 'hank'),
array('name' => 'jofryhs')
);
echo json_encode($arr);
结果:[{“name”:“hank”},{“name”:“jofryhs”}]
JSON不正确,或者您是否以某种方式粘贴了它?通过任何json可视化工具运行它/lint/etcLet我尝试通过一些json可视化工具运行它,我会更新它原始返回是有效的json,但不是您所期望的,它将是一个包含三个字符串的数组,您运行json_编码的数组是什么样子的?json不正确,或者您是否以某种方式粘贴了它?通过任何json可视化工具运行它/lint/etcLet我尝试通过一些json可视化工具运行它,我会更新它原始返回是有效的json,但不是您所期望的,它将是一个包含三个字符串的数组,您运行json_编码的数组是什么样子的?这不起作用。事实上,给我一个意想不到的令牌。我认为我的数据
已经是一个JSON对象,但不知何故,我无法使用data.key访问它。这不起作用。事实上,给我一个意想不到的令牌。我认为我的数据
已经是一个JSON对象,但不知何故,我无法使用数据访问它。key@User016尽管如此,这确实是一个有效且重要的观察结果。。。这应该是一个评论…@User016尽管如此,它确实是一个有效且重要的观察结果。。。这应该是一个评论…好的,现在正式修复了。当指出多个json_编码的问题时,我正在修复这个问题。谢谢。好的,现在正式修好了。当指出多个json_编码的问题时,我正在修复这个问题。谢谢