【发布时间】:2010-12-31 03:41:36
【问题描述】:
我正在尝试访问第三方 URL 以获取 XML 响应并将响应显示到我的网页中。 在 IE 和 Safari 浏览器中,我得到了状态为 200 和 readystate 为 4 的正确响应。 但是在 FF3.5 和 Crome 中,我将 XMLHTTPRequest 状态设为 0,而 reponseText 以空白字符串的形式出现。我尝试了许多选项来编写普通的 XMLHTTPRequest Ajax 代码以及为此 ajax 请求使用 Prototype 1.5 版本的 js 文件,但 FF 3.5 中的状态和响应文本仍然与 0 和空白字符串相同。
任何帮助如何解决此问题或导致此问题的确切原因将不胜感激。 我还尝试在本地执行我的代码以及部署到网络服务器,但 FF 中的响应是相同的。
下面是我的代码sn-p
<script type="text/javascript" src="prototype_ajax.js"></script>
<script type="text/javascript" language="javascript">
new Ajax.Request("I place my URL Here", {
method: 'get',
onSuccess : function(transport){
var resultDoc = transport.responseText;
var rootObj = loadXML(resultDoc);
},
onFailure : function(transport){
alert(' On Failure '+transport)
}
});
function loadXML(xmlFile) {
var xmlDocElement =null;
var xmlDoc = null;
if (window.ActiveXObject) {
try {
// code for IE
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.loadXML(xmlFile);
} catch (e) {
alert("inside catch::"+e.message);
}
} else {
// code for Mozilla, Firefox, Opera, etc.
parser=new DOMParser();
xmlDoc=parser.parseFromString(xmlFile,"text/xml");
//xmlDocElement=xmlDoc.documentElement;
}
//alert('loadXML value '+xmlDoc)
return xmlDoc;
}
</script>
【问题讨论】:
-
“第三方 URL”与执行请求的脚本所在的页面是否位于同一域中?
-
您还应该使用 XMLHttpRequest 来加载 XML 文件,而不是不规范且兼容性较差的 DOMParser 或 XMLDOM。
标签: javascript html ajax xmlhttprequest