从api响应中获取特定值

时间:2019-10-31 16:47:26

标签: javascript php jquery ajax

我将Ajax请求发送到PHP文件,然后将CURL请求发送到API,然后返回结果。

PHP代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://api.example.com?country=usa');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);

$response = array('result' => $result);
echo json_encode($response);

Javascript / jQuery代码:

$.ajax({
    url: "file.php",
    type: "POST",
    dataType : "json",
    success: function(data){
        console.log(typeof(data.result));
        console.log(data.result);
    }
});

结果的类型为string,结果如下:

{"results":[{"code2":"093","code1":"NY","lng":-73.9395687,"name1":"New York","lat":42.8142432}]}

如何从该结果中获取lnglat

2 个答案:

答案 0 :(得分:2)

当代理从第三方API作为JSON编码的字符串返回响应时,您需要对其进行手动反序列化。您可以使用JSON.parse()来完成。然后,您可以按索引访问results数组中的对象。试试这个:

var data = {
  result: '{"results":[{"code2":"093","code1":"NY","lng":-73.9395687,"name1":"New York","lat":42.8142432}]}'
}

// inside your AJAX callback:
var obj = JSON.parse(data.result);
var lat = obj.results[0].lat;
var lng = obj.results[0].lng;

console.log(lat);
console.log(lng);

答案 1 :(得分:1)

var data = {"results":[{"code2":"093","code1":"NY","lng":-73.9395687,"name1":"New York","lat":42.8142432}]}
console.log(data.results[0].lat);
console.log(data.results[0].lng);

data.results是数组,因此使用[0]获取Array的第一个元素:

data.result[0]

然后获取第一个元素的内容:

data.result[0].lat

Ajax:

$.ajax({
    url: "file.php",
    type: "POST",
    dataType : "json",
    success: function(data){
        console.log(data.result[0].lat);
        console.log(data.result[0].lng);
    }
});