在ajax调用之后将数据从PHP API转换为JSON对象

时间:2016-09-19 23:45:14

标签: javascript jquery json ajax

我有一个api,在使用jQuery ajax调用它之后以下列格式返回数据:

API致电

$.get("displayapi.php",function(data){
        var json=data;
        console.log(json);});

登录控制台

{
"listing": {
    "id": "7",
    "name": "Nina Randy",
    "product": "Studio Apartment for Rent ",
    "email": "n@gwmail.gwu.edu",
    "phone": "2147483647",
    "des": "Apartment near Foggy Bottom metro station for rent. Available from     May 2016. Please contact for more details",
    "cost": "3000",
    "category": "apartments",
    "date": "2016-04-24",
    "pic": "unnamed.jpg"
}
}{
"listing": {
    "id": "6",
    "name": "Jay Sean",
    "product": "Parking Spot near Gelman Library",
    "email": "jsean@gwmail.gwu.edu",
    "phone": "2147483647",
    "des": "Parking spot located near foggy bottom metro station for sharing. Please contact for availability. ",
    "cost": "1000",
    "category": "parking",
    "date": "2016-04-18",
    "pic": "1002240-13-20160117082202.jpeg"
} 
}

它以Object格式显示内容,但实际上不是Object。如何将其转换为JSON对象,以便我可以访问该对象的各个属性。

5 个答案:

答案 0 :(得分:0)

你可以在php返回的字符串上调用JSON.parse(),如下所示:

$.get("displayapi.php",function(data){
        var dataObject = JSON.parse(data);
});

但是,由于您的返回值不是有效的JSON - 并且您实际上无法使其成为一个 - 请尝试以下方法:

$.get("displayapi.php",function(data){
        var dataObject = eval(data);
});

答案 1 :(得分:0)

您应该将您的响应数据解析为javascript json对象,如下所示;

$.get("displayapi.php",function(data){
    var json=data;
    var obj = JSON.parse(data);
    //iterate lsiting....
    $.each(obj.listing, function(i){
        console.log(obj.listing[i].name);
    })
});

答案 2 :(得分:0)

jQuery有一个名为$ .parseJSON()的本机函数,它将JSON字符串转换为对象。

http://api.jquery.com/jquery.parsejson/

实施例

$.get("displayapi.php",function(data){
    var json=data;
    console.log(json);
    var JSONdata = $.parseJSON(json);
    console.log(JSONdata.listing.id);
});

答案 3 :(得分:0)

如果在控制台上检查响应标头,则可以看到Content-Type设置为“text / html;”这就是为什么你在解析响应时遇到问题。

首先,使用$.getJSON代替$.get

您是否也可以在displayapi.php中设置正确的内容类型。例如:

<?php
 $data_array = array(); // The array you want to serialize
 header('Content-Type: application/json');
 echo json_encode($data_array);
?>

这样您就可以避免使用javascript再次解析响应。现在您可以再次检查控制台,并可以看到Content-Type设置为“application / json”

请测试并告诉我这是否有效。

答案 4 :(得分:0)

我建议您使用$.getJSON("displayapi.php",function(json){ $.each(json.listing, function(i){ console.log(obj.listing[i].name); }) }); 方法获取JSON数据.jquery注意使用此方法解析JSON数据

watchman

参考$.getJSON()方法