求助啊, 我用AJAX调用webservice ,回调老是执行error,不执行 success。
不知道是什么原因。把url放在浏览器上直接运行,能得到数据,用火狐浏览器调试也能看到返回的数据,但是就是不执行success。
代码如下:
1 $(document).ready(function(){http://i.cnblogs.com/EditPosts.aspx?opt=1 2 3 var _url="http://ming.pactera.com/uat/webservice/ValidateToken?employeeNo=P0029663&token=1234554322211122323"; 4 $.ajax({ 5 type:"post", 6 url:_url, 7 dataType:"json", 8 success:function(data){ 9 alert("aaaa"); 10 }, 11 error: function(XMLHttpRequest, textStatus, errorThrown){ 12 alert(errorThrown); 13 } 14 }); 15 });
是不是跨域问题看看就知道了。
解决办法是:
方法一:一定要在后台代码,返回数据的时候,指定返回的数据格式: (最好此方法)
context.Response.ContentType = "application/json";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
同时:要返回规范的json,{R: 1} 这种是不行的,在jquery1.3版本以后是解析不了的。
{"R": 1} 这种的才行。
方法二:
success:function(data){ data = JSON.parse(data); // process data},
是不是数据结构有问题那
应该不是。
跨域用jsonp~
http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html
http://www.cnblogs.com/chopper/archive/2012/03/24/2403945.html
随便园子里搜一搜吧~
webService 不存在跨域的问题吧。
@我为球狂: 如果只是我一个说跨域, 你可以不相信.
但是如果两个,三个,四个都说跨域, 或许值得你去研究一下~
ajax只要不是调用本页面的地址,都会存在跨域问题.
用jsonp把,你这属于跨域了
webService 不存在跨域的问题吧。
如果用的是asp.net , 可以直接在后台调用一下远程的webService,然后前端ajax请求后端的数据
只有webService Url 调用地址。 前段只能用ajax调用,但是就是不好用
@我为球狂: 如果用的是VS,直接添加服务应用,还会有问题吗? 就算是java,php方面 应该也都有封装好的SOAP访问类吧
首先看跨域,但是既然进了error应该是webservice执行异常了.
你在webservice打个断点看有没被调用吧
webService 不存在跨域的问题吧。只有webService Url 调用地址。 前段只能用ajax调用,但是就是不好用
@我为球狂: 跟webservice的没什么关系.
你是在浏览器上JS调用后台接口是吧?
webService 不存在跨域的问题吧??凡是用js调用都有可能,跨域的判断标准不是以什么接口区分,而是考虑当前发出请求的协议、域名、端口与目标是否相同
你在error处设断点,调试查看textStatus和errorThrown的具体信息嘛 我也遇到过这种情况后台返回了数据,但一直进error。看一下ajax status是不是为200,但是进error
看看error返回的信息,我觉得跨域的可能性比较大。
错误信息是什么 火狐浏览器的控制台
在System.web 这个节点中添加如下配置即可
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
error返回的信息,跨域的可能性比较大。
看你的url是一个绝对路径,和本地应该不在一个域里面(否则你为什么不用相对路径),应该是跨域了。不过你的webservices的url中,不是应该是***/***/webservicesname.asmx/funname这样的么,好像少个.asmx??假如真是你引用的地址确实是其它网站的,可以在本网站目录下建一个webservices,然后web引用其它网站的webservices,然后jquery调用本地的这个webservices,这样也行行。
我是看着紧急求助进来的, 楼上都说了很多了 的确是跨域了调用了 先理解下 jsonp 然后就可以解决这个问题了
应该是跨域了,试一下jsonp,下面是参考示例,话说,那个链接好像打不开……
$.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');
}
});