3

ページが読み込まれると、この関数は実行されますが、アラート2にしか到達しません。前の行のバグが原因で、アラート3に到達しないと思われvar id_array = xmlDoc.getElementsByTagName("id");ます。私はそれを正しく使用しているかどうかを調べるために調査を試みgetElementsByTagName()ましたが、それでも私はそう感じています。

var xmlhttp;
xmlhttp=new XMLHttpRequest();

xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200){

        var xmlDoc = xmlhttp.responseXML;
    alert("2");
        var id_array = xmlDoc.getElementsByTagName("id");
    alert("3");
    for(id in id_array)
    {
        // do something with the id 
    }
    }
}
xmlhttp.open("POST", "xmlDoc.xml", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(); 
alert("1");

これは、読み取る必要のあるxmlドキュメントのサンプルです。実際のファイルは、SQLデータベースからのさまざまな情報を使用してx個の「id」を生成します。

<id>
    <name><![CDATA[<?php echo $query_array["name"]; ?>]]></name>
    <latitude><![CDATA[<?php echo $query_array["latitude"]; ?>]]></latitude>
    <longitude><![CDATA[<?php echo $query_array["longitude"]; ?>]]></longitude>
    <color><![CDATA[<?php echo $color_array["color_id"]; ?>]]></color>
    <color_r><![CDATA[<?php echo $color_array["red"]; ?>]]></color_r>
    <color_g><![CDATA[<?php echo $color_array["green"]; ?>]]></color_g>
    <color_b><![CDATA[<?php echo $color_array["blue"]; ?>]]></color_b>
    <text><![CDATA[<?php echo $user_array["comment"]; ?>]]></text>
</id>
<id>
    <name><![CDATA[<?php echo $query_array["name"]; ?>]]></name>
    <latitude><![CDATA[<?php echo $query_array["latitude"]; ?>]]></latitude>
    <longitude><![CDATA[<?php echo $query_array["longitude"]; ?>]]></longitude>
    <color><![CDATA[<?php echo $color_array["color_id"]; ?>]]></color>
    <color_r><![CDATA[<?php echo $color_array["red"]; ?>]]></color_r>
    <color_g><![CDATA[<?php echo $color_array["green"]; ?>]]></color_g>
    <color_b><![CDATA[<?php echo $color_array["blue"]; ?>]]></color_b>
    <text><![CDATA[<?php echo $user_array["comment"]; ?>]]></text>
</id>
<id>
    <name><![CDATA[<?php echo $query_array["name"]; ?>]]></name>
    <latitude><![CDATA[<?php echo $query_array["latitude"]; ?>]]></latitude>
    <longitude><![CDATA[<?php echo $query_array["longitude"]; ?>]]></longitude>
    <color><![CDATA[<?php echo $color_array["color_id"]; ?>]]></color>
    <color_r><![CDATA[<?php echo $color_array["red"]; ?>]]></color_r>
    <color_g><![CDATA[<?php echo $color_array["green"]; ?>]]></color_g>
    <color_b><![CDATA[<?php echo $color_array["blue"]; ?>]]></color_b>
    <text><![CDATA[<?php echo $user_array["comment"]; ?>]]></text>
</id>

したがって、私の期待される動作は、id_array(この例では)が3つのセル(発生ごとに1つ)を取得し、それらの各セルにタグ内のすべてのデータが含まれることです。

しかし、繰り返しになりますが、id_arrayの割り当てにバグがあり、何も起こらないようになっているのではないかと思います。

どんな助けでも素晴らしいでしょう!

4

1 に答える 1

0

セットする

xmlhttp.setRequestHeader('Content-Type',  'text/xml');

かどうかを確認します

xmlhttp.responseXML

nullを実行しようとするとエラーが発生しません.getElementsByTagName("id")

于 2012-09-28T23:20:08.780 に答える