在本地页面使用$.ajax进行跨域访问webservice接口:
第一例:
$.ajax({
type: 'GET',
url: 'http://www.pm25.in/api/querys/aqi_details.json?city=wenzhou&token=',
dataType: 'jsonp',
success: function(msg){
alert(JSON.stringify(msg));
},
error:function(){
alert('error');
}
});
成功输出响应数据;
第二例:
$.ajax({
type: 'GET',
url: "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=温州",
dataType: 'jsonp',
success: function(msg){
alert('success');
},
error:function(XMLHttpRequest, textStatus, errorThrown){
alert('error');
}
});
输出error。但在谷歌浏览器的调试界面上可以看到如下界面,
证明响应中已经包含需要的数据。问题分析:dataType: 'jsonp',返回的数据类型为xml,这可能是造成失败的原因。但为什么响应中会有需要的数据?这些数据怎么取出来呢?
error的回调函数中,textStatus为parsererror,errorThrown示意回调函数没有执行,可以确定为解析异常。是不是jsonp不可以处理xml数据呢?
既然response中有需要的数据,那么总该有办法把他们提取出来吧?到底该怎么取呢?
就是调用成功了.但是内容解析失败.因为返回的是XML
js不能直接解析xml的,所以才要json.
像上面的加个请求头,让服务返回json就好了.
服务值返回xml数据……那怎么把数据取出来自己看、来解析呢?
@小小三师弟: 那得看jqeury支持不了