我写的是一个腾讯地图的距离计算跨域请求,返回的知不知道该怎么取,
$.ajax({ type:"get", URL: "http://apis.map.qq.com/ws/distance/v1/?mode=driving&from=39.983171,116.308479&to=39.996060,116.353455;39.949227,116.394310&key=E77BZ-YJ3WD-RZZ4C-PCANM-UKJL2-TOBD7", dataType : "jsonp", jsonp: "callbackparam", jsonpCallback: "jsonpCallback1", success: function (json) { alert(json[result].elements.distance) } })
这是返回值
{ "status": 0, "message": "query ok", "result": { "elements": [ { "from": { "lat": 39.983171, "lng": 116.308479 }, "to": { "lat": 39.996059, "lng": 116.353454 }, "distance": 5354.7, "duration": 1467 }, { "from": { "lat": 39.983171, "lng": 116.308479 }, "to": { "lat": 39.949226, "lng": 116.394309 }, "distance": 10495.8, "duration": 2137 } ] } }
我要去里面的distance、duration值
nJson = eval(json);
alert(nJson.result.elements[0].distance);
你需要定义一个functin jsonpCallback1(data){
}
// jsonp的返回值就在data里面。
jsonpCallback: "jsonpCallback1",这里定义的了一个response回调函数,
首先将这个json转化为一个对象,然后你就可以使用级联的写法了a.b.c这种方式
前端获取的是个json字符串 并不是个json对象
首先$.parseJSON(json)转换成json对象 在级联获取
我也不懂,我百度的。
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:
1.一种为使用eval()函数。
2. 使用Function对象来进行返回解析。
1.对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串方式接受,那
么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次。这种方式也
适合以普通javascipt方式获取json对象,以下举例说明:
var dataObj=eval("("+data+")");//转换为json对象
为什么要 eval这里要添加 “("("+data+")");//”呢?
原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成
一个语句块来处理,所以必须强制性的将它转换成一种表达式。
你的ajax定义了返回的数据是json(而且你的写成了'jsonp'),返回的数据就是json数据不用解析,直接就可以按层级获取