我的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)
那里得到任何东西。我在这里做错了什么吗?
谢谢!
你已经从 php 转换了 json
。success: function(result) {
var res = JSON.parse(result)
console.log(result)
console.log(res.prop1)
console.log(res.prop2)
}
有两种方法可以从 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);
}
});
你在PHP中对数组进行编码以将其发送到Javascript,通过编写json_encode($testData);
,因此要在javascript端获取它,你必须使用JSON.parse(yourencodedArray)
通过使用它,你可以在数组中获取值。
var data = JSON.parse(yourencodedArray);
var dat1 = data.prop1;
var dat2 = data.prop2;
JSON.parse能够解码编码的数组。