我正在对网络服务进行以下调用:
$.ajax({
dataType:'json',
cache:false,
type: "GET",
url: url,
success: function (data) {
alert("success");
},
error: function (xhr, ajaxOptions, thrownError){
alert('Failed to subscribe.');
}
});
Web 服务被命中并且肯定会返回 json - 我可以通过浏览器命中它并得到我所期望的结果。在我的网站中,错误函数总是被调用。
使用 Fiddler 我可以看到有 200 个结果 - 我唯一注意到的是 fiddler 在响应中说
Response is encoded and may require decoding before inspection. Click here to transform.
当我点击它时,响应从一堆随机符号变成了我期望的 json。
通过谷歌搜索,我看到添加 contentType: "application/json;charset=UTF-8",
的建议接到我的电话。
这可以阻止我的网络服务功能受到影响。
我也尝试将其更改为 POST,只是为了看看这是否是问题所在......仍然不起作用。
谁能指出我做错了什么?
编辑: 我刚刚注意到我在 Chrome 中得到了这个
Refused to set unsafe header "Accept-Encoding" XMLHttpRequest cannot load http://localhost:57631/Api/Products/SubscribeEmailMeWhenAvailable/203/wrfw@wrwq.com?_=1447757623275. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:50217' is therefore not allowed access.
最佳答案
此消息似乎与 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.');
}
});
关于javascript - ajax 调用 web 服务总是会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33754577/