首页 新闻 会员 周边 捐助

紧急求助!JQUERY AJAX 调用webservice 问题

3
悬赏园豆:100 [已解决问题] 解决于 2014-05-27 19:14

求助啊, 我用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 });
我为球狂的主页 我为球狂 | 初学一级 | 园豆:5
提问于:2014-05-22 21:46
< >
分享
最佳答案
0

 

 

是不是跨域问题看看就知道了。

解决办法是:

  方法一:一定要在后台代码,返回数据的时候,指定返回的数据格式:  (最好此方法)

  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},

收获园豆:20
Gamain | 菜鸟二级 |园豆:357 | 2014-05-27 16:41
其他回答(14)
0

是不是数据结构有问题那

收获园豆:5
MingHao_Hu | 园豆:8 (初学一级) | 2014-05-23 08:09

 应该不是。

支持(0) 反对(0) 我为球狂 | 园豆:5 (初学一级) | 2014-05-23 08:32
0

跨域用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

随便园子里搜一搜吧~

收获园豆:5
小伍2013 | 园豆:1291 (小虾三级) | 2014-05-23 08:39

webService 不存在跨域的问题吧。

支持(0) 反对(0) 我为球狂 | 园豆:5 (初学一级) | 2014-05-23 10:46

@我为球狂: 如果只是我一个说跨域, 你可以不相信.

但是如果两个,三个,四个都说跨域, 或许值得你去研究一下~

ajax只要不是调用本页面的地址,都会存在跨域问题.

支持(0) 反对(0) 小伍2013 | 园豆:1291 (小虾三级) | 2014-05-23 21:59
0

用jsonp把,你这属于跨域了

收获园豆:5
刘宏玺 | 园豆:14020 (专家六级) | 2014-05-23 09:09

webService 不存在跨域的问题吧。

支持(0) 反对(0) 我为球狂 | 园豆:5 (初学一级) | 2014-05-23 10:46
0

如果用的是asp.net , 可以直接在后台调用一下远程的webService,然后前端ajax请求后端的数据

收获园豆:5
Devin Mao | 园豆:596 (小虾三级) | 2014-05-23 09:21

 只有webService Url 调用地址。 前段只能用ajax调用,但是就是不好用

支持(0) 反对(0) 我为球狂 | 园豆:5 (初学一级) | 2014-05-23 10:47

@我为球狂: 如果用的是VS,直接添加服务应用,还会有问题吗?  就算是java,php方面 应该也都有封装好的SOAP访问类吧

支持(0) 反对(0) Devin Mao | 园豆:596 (小虾三级) | 2014-05-23 10:50
0

首先看跨域,但是既然进了error应该是webservice执行异常了.

你在webservice打个断点看有没被调用吧

收获园豆:5
吴瑞祥 | 园豆:29449 (高人七级) | 2014-05-23 09:53

webService 不存在跨域的问题吧。只有webService Url 调用地址。 前段只能用ajax调用,但是就是不好用

支持(0) 反对(0) 我为球狂 | 园豆:5 (初学一级) | 2014-05-23 10:47

@我为球狂: 跟webservice的没什么关系.

你是在浏览器上JS调用后台接口是吧?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-05-23 12:23
0

webService 不存在跨域的问题吧??凡是用js调用都有可能,跨域的判断标准不是以什么接口区分,而是考虑当前发出请求的协议、域名、端口与目标是否相同

收获园豆:5
阿土仔 | 园豆:171 (初学一级) | 2014-05-23 11:57
0

你在error处设断点,调试查看textStatus和errorThrown的具体信息嘛 我也遇到过这种情况后台返回了数据,但一直进error。看一下ajax status是不是为200,但是进error

收获园豆:5
单恋 | 园豆:678 (小虾三级) | 2014-05-23 13:14
0

看看error返回的信息,我觉得跨域的可能性比较大。

收获园豆:5
Rookier | 园豆:652 (小虾三级) | 2014-05-23 14:20
0

错误信息是什么 火狐浏览器的控制台  

s_p | 园豆:140 (初学一级) | 2014-05-23 15:43
0

在System.web 这个节点中添加如下配置即可

  <webServices>
        <protocols>
          <add name="HttpGet"/>
          <add name="HttpPost"/>
        </protocols>
      </webServices>

收获园豆:5
贺臣 | 园豆:307 (菜鸟二级) | 2014-05-23 17:43
0

error返回的信息,跨域的可能性比较大。

收获园豆:5
一毅 | 园豆:211 (菜鸟二级) | 2014-05-25 21:18
0

看你的url是一个绝对路径,和本地应该不在一个域里面(否则你为什么不用相对路径),应该是跨域了。不过你的webservices的url中,不是应该是***/***/webservicesname.asmx/funname这样的么,好像少个.asmx??假如真是你引用的地址确实是其它网站的,可以在本网站目录下建一个webservices,然后web引用其它网站的webservices,然后jquery调用本地的这个webservices,这样也行行。

收获园豆:10
蓝色之猫 | 园豆:283 (菜鸟二级) | 2014-05-26 14:14
0

我是看着紧急求助进来的, 楼上都说了很多了  的确是跨域了调用了   先理解下  jsonp  然后就可以解决这个问题了

收获园豆:5
奶茶爽歪歪 | 园豆:243 (菜鸟二级) | 2014-05-27 11:40
0

应该是跨域了,试一下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');
}
});

收获园豆:15
小小三师弟 | 园豆:205 (菜鸟二级) | 2014-05-27 15:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册