在我的情况下,如何通过ajax获取数据


How to get retrieve data via ajax in my case?

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