我正在拨打以下网络服务电话:
$.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”访问。
答案 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.');
}
});