我的php和javascript中有一个奇怪的问题。
我有像php那样的东西
$testData = array(
'prop1' => true,
'prop2' => 2,
'name' => 'testname',
'number' => 123
);
echo json_encode($testData);
在Javascript中
$.ajax({
type: "GET",
cache: false,
async: false,
url: phpfile,
global: false,
success: function(result) {
console.log(result)
console.log(result.prop1)
console.log(result.prop2)
}
我能够从console.log(result)
获得结果,但我无法从console.log(result.prop1)
或console.log(result.prop2)
获得任何结果。我在这里做错了吗?
谢谢!
答案 0 :(得分:2)
你已经从php
转换了jsonsuccess: function(result) {
var res = JSON.parse(result)
console.log(result)
console.log(res.prop1)
console.log(res.prop2)
}
答案 1 :(得分:1)
有两种方法可以从ajax获取json对象。
首先:(推荐)
您必须使用JSON
,
示例:
$.ajax({
type: "GET",
cache: false,
async: false,
url: phpfile,
global: false,
dataType: 'JSON',
success: function(result) {
console.log(result)
console.log(result.prop1)
console.log(result.prop2)
}
});
在这种情况下,jQuery会将结果处理为JSON
然后您可以访问它的对象属性,如果它不是JSON
,那么它将用于错误事件。
<强>第二强>
解析对象的另一种方法是使用JSON.parse()
函数,因为您获得的数据只是字符串。
示例:
$.ajax({
type: "GET",
cache: false,
async: false,
url: phpfile,
global: false,
success: function(result){
var data = JSON.parse(result);
console.log(data);
console.log(data.prop1);
console.log(data.prop2);
}
});
答案 2 :(得分:1)
您在PHP中对数组进行编码以将其发送到Javascript,通过编写json_encode($testData);
以便在javascript端获取它,您必须使用此JSON.parse(yourencodedArray)
,您可以在数组中获取值
var data = JSON.parse(yourencodedArray);
var dat1 = data.prop1;
var dat2 = data.prop2;
JSON.parse 能够解码您编码的数组。