我正在尝试使用以下 jquery 代码将 Accept HTTP 标头设置为“text/xml”:
$.ajax({
beforeSend: function(req) {
req.setRequestHeader("Accept", "text/xml");
},
type: "GET",
url: "[proper url]",
contentType: "text/plain; charset=utf-8",
dataType: ($.browser.msie) ? "text" : "xml",
username: '---',
password: '-------',
success: function(data) {
var xml;
if (typeof data == "string") {
alert("Data is string:" + data);
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
xml.loadXML(data);
} else {
xml = data;
alert("Data is not string:" + $(xml).text());
}
// Returned data available in object "xml"
//alert("Status is: " + xml.statusText);
$("#ingest_history").html($(xml).text());
}
});
在火狐浏览器中效果很好。
但在 IE 中,我尝试为 Accept 标头设置的值似乎会附加到末尾,因此它变为:Accept: */*, text/xml
。这导致我的 ajax 调用返回 html 版本,而不是我想要的 xml 版本。
有谁知道如何在 IE 8 中正确设置/清除 Accept 标头?
更新:出于某种原因,当我输入星号时,星号没有出现。 IE 中的 Accept 标头似乎是:Accept: */*, text/xml
.
我也遇到了这个问题,不仅在 IE 中,而且在使用 jQuery 1.6.2 的 Chrome 和 Safari 中也遇到了问题。该解决方案似乎在我尝试过的所有浏览器(Chrome、Safari、IE、Firefox)中都能按预期工作。
$.ajax({
headers: {
Accept : "text/plain; charset=utf-8",
"Content-Type": "text/plain; charset=utf-8"
},
data: "data",
success : function(response) {
...
}
})
如果这仍然给您带来麻烦,请尝试这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)