在我的案例中如何通过ajax获取数据?

时间:2015-01-13 17:32:48

标签: javascript php ajax

我的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)获得任何结果。我在这里做错了吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

你已经从php

转换了json
success: function(result) {
  var res = JSON.parse(result)
  console.log(result)
  console.log(res.prop1)
  console.log(res.prop2)
}

答案 1 :(得分:1)

有两种方法可以从ajax获取json对象。

首先:(推荐) 您必须使用JSON

定义dataType属性

示例:

$.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 能够解码您编码的数组。