我有一个XML作为使用JS的SOAP服务的响应。但我无法用HTML显示它。 这是我的JS代码。
function renderXML(xmlDoc) {
var i;
var list="<ul class='ui-listview'> ";
var x = xmlDoc.getElementsByTagName("Table");
for (i = 0; i <x.length; i++) {
list += "<li class='ui-li-static'>" +
x[i].getElementsByTagName("Name")[0].childNodes[0].nodeValue +
"</li> " ;
}
list += "</ul>";
document.getElementById("ws_data").innerHTML = list;
}
我将此XML作为响应。 http://www.webservicex.net/country.asmx/GetCountries
显示
app.js:33 Uncaught TypeError: Cannot read property 'getElementsByTagName' of null
在这一行
var x = xmlDoc.getElementsByTagName("Table");
但是,如果我发送一个硬编码的xml到该功能,它工作正常!并在html中显示。
var data= jQuery.parseXML("<NewDataSet> <Table> <Name>Afghanistan, Islamic State of</Name> </Table> <Table> <Name>Albania</Name> </Table> <Table> <Name>Algeria</Name> </Table> <Table> <Name>American Samoa</Name> </Table> </NewDataSet> ");
renderXML(data);
有什么问题?
答案 0 :(得分:2)
您的网络服务以这种格式返回XML:
<string>XML as TEXT</string>
因此,您需要解析XML as TEXT
以获取XML文档。请知道这个演示:https://jsfiddle.net/iRbouh/q20w39f8/
此外,在检查服务器响应头之后,没有Access-Control-Allow-Origin
,这意味着服务器不允许跨源访问。由于您发出了跨域HTTP请求,因此浏览器将遵循同源策略拒绝您的请求:
同源策略限制文档或脚本的加载方式 一个来源可以与来自另一个来源的资源进行交互。它是一个 用于隔离潜在恶意攻击的关键安全机制 文档。
简而言之,您 CAN&#39; 向该网络服务发出ajax请求。
PS:在我的演示中,我使用了CORS代理:https://crossorigin.me/