我真的不明白为什么我从带有 Dojo 的 xhrPost 得到不同的响应。对于 IE8,它工作正常并且可以读取 XML - 但在 Firefox 中它的工作方式不同并且没有“serverResponse.results[0].xml”这样的属性 - 见下文:
var serverResponse = dojo.xhrPost(xhrArgs);
serverResponse.results[0].xml
就像您在 IE8 中一样。
有谁知道在使用 xhrPost 时如何在 Firefox 中正确处理响应。 干杯。
var message = '<?xml version="1.0" encoding="utf-8"?>' +
'<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">' +
'<soap12:Body>' +
'<MineSearch xmlns="http://localhost/">' +
'<x>' + inPoint.x + '</x>' +
'<y>' + inPoint.y + '</y>' +
'<buffer>' + buffer + '</buffer>' +
'</MineSearch>' +
'</soap12:Body>' +
'</soap12:Envelope>';
//The parameters to pass to xhrPost, the message, and the url to send it to
//Also, how to handle the return and callbacks.
var xhrArgs = { url: "http://localhost/ApplicationServices.asmx?op=MineSearch",
postData: message,
headers: { "Content-Type": "application/soap+xml" },
handleAs: "xml",
sync: true,
load: function(data) {
dojo.byId("footer").innerHTML = "Message posted.";
},
error: function(error) {
dojo.byId("footer").innerHTML = "Message error.";
}
}
//Call the asynchronous xhrPost
var serverResponse = dojo.xhrPost(xhrArgs);
var xmldata = serverResponse.results[0].xml;
var xmlDoc;
if (window.DOMParser) {
parser = new DOMParser();
//Below is wrong somehow and the serverResponse.results[0] is probably wrong too.
xmlDoc = parser.parseFromString(serverResponse.results[0], "text/xml");
}
else // Internet Explorer
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(xmldata);
}
最佳答案
dojo.xhrPost
的返回对象是一个dojo.Deferred
对象,不应从dojo.Deferred
对象中检索响应.
如果你指定handleAs
为xml
,你可以直接在load
函数中通过参数data获取响应的XML文档
。
var xhrArgs = { url: "http://localhost/ApplicationServices.asmx?op=MineSearch",
postData: message,
headers: { "Content-Type": "application/soap+xml" },
handleAs: "xml",
sync: true,
load: function(data) {
//data is the XML document
},
error: function(error) {
dojo.byId("footer").innerHTML = "Message error.";
}
}
dojo.xhrPost(xhrArgs);
关于javascript - xhrPost 与 Firefox 和 IE8 的工作方式不同——但我如何处理响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3628538/