2016-07-16 11 views
0

JSを使用してSOAPサービスからの応答としてXMLを取得しました。しかし、私はHTMLで表示することはできません。 私のJSコードです。SOAPからxmlを解析できません

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

それは、このライン

var x = xmlDoc.getElementsByTagName("Table"); 

app.js:33 Uncaught TypeError: Cannot read property 'getElementsByTagName' of null 

を示ししかし、私はその機能にハードコード化された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); 

何が問題ですか?

答えて

2

あなたのWebサービスは、この形式のXMLを返します。

<string>XML as TEXT</string> 

ですから、XMLドキュメントを取得するためにXML as TEXTを解析する必要があります。このデモをチェクしてください:https://jsfiddle.net/iRbouh/q20w39f8/

また、サーバーのレスポンスヘッダを検査した後、何Access-Control-Allow-Originはありません、これはサーバがクロスオリジンのアクセスを許可しないことを意味します。あなたは、クロスオリジンのHTTP要求を行うので、あなたの要求は、同一生成元ポリシー以下のブラウザによって拒否されます。要するに

The same-origin policy restricts how a document or script loaded from one origin can interact with a resource from another origin. It is a critical security mechanism for isolating potentially malicious documents.

は、あなたがそのWebサービスへのAJAXリクエストをしないことができます。

PS:私のデモでは、私はCORSプロキシを使用:https://crossorigin.me/

+0

は動作していない...それはapp.js(42)を示しています。例外TypeError: 'ヌル' は 'xmlDoc.getElementsByTagName' を評価対象(ではありません) –

+0

私はJquery 1.9.1を使用しています...それは問題ですか? –

+0

いいえ...私はXMLHTTPRequestを使用しました –

関連する問題