XMLファイルを生成するサーバー上のphpファイルにhttp_requestを作成するjavascript関数があります(以下の出力を参照)。XMLファイルが返されると、同じjavascript関数がXMLを解析し(これが私の問題です)、それを他の関数に渡します。処理の大部分を行います。
これまでのところ、XMLドキュメントを解析できず、その理由を完全に理解することはできません。
XML
<Results><!--Root-->
<Result_Set>
<State>State</State>
<Cities>
<City>City 1</City>
<City selected="true">City 2</City>
...ETC...
</Cities>
<Zipcodes>
<Zipcode selected="true">Zipcode 1</Zipcode
<Zipcode>Zipcode 2</Zipcode>
...ETC...
</Zipcodes>
</Result_Set>
</Results>
Javascript
function GetZipInfo(zipcode){
var xmlhttp;
var x,resultSet,state,cities,zipcodes
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
resultSet=xmlhttp.responseXML.documentElement.getElementsByTagName("Result_Set") //Function Crashes Here
for(x=0;x<resultSet.length;x++){
state=resultSet[x].getElementsByTagName("State")[0].nodeValue;
cities=resultSet[x].getElementsByTagName("Cities");
zipcodes=resultSet[x].getElementsByTagName("Zipcodes");
selectState(state)
xmlDropdown(cities, "City", "Cities")
xmlDropdown(zipcodes, "Zipcode", "Zipcodes")
}
}
}
xmlhttp.open("GET","GetZipInfo.php?Zipcode="+zipcode,true);
xmlhttp.send();
}
私はこれまでどの言語のXML文書も解析したことがないので、何が悪いのか完全に迷っていると言っても過言ではありません。
前もって感謝します!
編集:私の応答がresponseXMLではなくresponseTextとして戻ってきていることがわかりました
responseText
私はPHPを使用してXMLページを作成しています:
header("Content-Type: text/plain");
//Create the DOM
echo $xmlDoc->saveXML()
XMLとして返されない理由はまだわかりません。echo $ xmlDoc-> saveXML()と関係がありますか?
編集:私の問題はXMLファイルのヘッダーにあるといういくつかのコメントに同意します。コードに「alert(xmlhttp.responseText)」という行を追加しました。表示されるもの:
<?xml version="1.0"?>
<!--The Contents of my XML file-->
これを正しく機能させるには、エンコードタイプを設定する必要がありますか?もしそうなら、PHPコード(上記を参照)を変更してそのエンコーディングを挿入するにはどうすればよいですか?