ajax对webservice的调用总是会导致错误

时间:2015-11-17 10:28:02

标签: javascript jquery ajax web-services

我正在拨打以下网络服务电话:

$.ajax({
    dataType:'json',
    cache:false,
    type: "GET",
    url: url,
    success: function (data) {
        alert("success");            
    },
    error: function (xhr, ajaxOptions, thrownError){
        alert('Failed to subscribe.');
    }  
});                

网络服务被点击并肯定会返回json - 我可以通过浏览器点击它并获得我期望的结果。在我的网站中,始终会调用错误函数。

使用Fiddler我可以看到有200个结果 - 我唯一注意到的是响应中的fiddler说

  

响应已编码,可能需要在检查前进行解码。点击此处进行转换。

当我点击它时,响应从一堆随机符号变为我期望的json。

通过Google搜索,我看到了将contentType: "application/json;charset=UTF-8",添加到我的通话中的建议。

这会阻止我的网络服务功能被击中。

我也尝试将其更改为POST,只是为了查看问题是否仍然存在......仍然无效。

任何人都可以指出我做错了吗?

编辑: 我刚刚注意到我在Chrome中得到了这个

  

拒绝设置不安全标头“Accept-Encoding”   XMLHttpRequest无法加载http://localhost:57631/Api/Products/SubscribeEmailMeWhenAvailable/203/wrfw@wrwq.com?_=1447757623275。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:50217”访问。

1 个答案:

答案 0 :(得分:0)

此消息似乎与gzip压缩有关。

你试过这个吗?

headers: { "Accept-Encoding" : "gzip,deflate,sdch" } 

结果:

$.ajax({
    headers: { "Accept-Encoding" : "gzip,deflate,sdch" } 
    contentType: "application/json; charset=utf-8",
    dataType:'json',
    cache:false,
    type: "GET",
    url: url,
    success: function (data) {
        alert("success");            
    },
    error: function (xhr, ajaxOptions, thrownError){
        alert('Failed to subscribe.');
    }  
});