0

私がやろうとしているのは、データを抽出するために ajax リクエストから XML を取得することです (DOM を使用しますが、重要ではありません)。いいえ、AjaxRequest.responseText を取得しようとすると問題なく動作するため、ajax が正常に動作することはわかっています。私が取得しているエラーメッセージは次のように言っています:

「null」はオブジェクトではありません (「resturantsCategoriesAjaxXML.getElementsByTagName」を評価しています)

そして、responseXML をログに書き込もうとすると、定義されていないように null しか返されません。AJAX を処理する完全な JS (変な変数名で申し訳ありません。問題がタイプミスの場合に備えて変数名を変更したくなかっただけです) と、取得する XML (単純な XML) を含めました。 ご協力ありがとうございました:D

Java スクリプト:

resturantsCategoriesAjaxRequestAdress = "testFiles/categoriesAjax.xml";
resturantsCategoriesAjaxRequest = new XMLHttpRequest();
resturantsCategoriesAjaxRequest.onreadystatechange = function(){
if(resturantsCategoriesAjaxRequest.readyState == 4){
    resturantsCategoriesAjaxXML = resturantsCategoriesAjaxRequest.responseXML;
    console.log(resturantsCategoriesAjaxRequest.responseXML);
    categoriesArray = resturantsCategoriesAjaxXML.getElementsByTagName("category");
    categoriesArraylenght = categoriesArray.length;
    alert(categoriesArraylenght);
    categoriesArrayIritationControl = 0;
    while (categoriesArraylenght >= categoriesArrayIritationControl) {
        categoryName = categoriesArray[categoriesArrayIritationControl].getAttribut("name");
        //create new <li> object
        //add to ctegories menu on restrants page
        alert(categoryName);
    }
}
}
resturantsCategoriesAjaxRequest.open("GET", resturantsCategoriesAjaxRequestAdress, true);
resturantsCategoriesAjaxRequest.overrideMimeType("text/xml");
resturantsCategoriesAjaxRequest.send();
console.log(resturantsCategoriesAjaxRequest.readyState);

XML:

<?xml version='1.0'?>
<category name="Fast_Food" id="1120"></category>
<category name="Chinese" id="1108"></category>
<category name="Italian" id="1230"></category>
4

2 に答える 2

2

あなたのドキュメントは適切な xml ドキュメントではないと思います。上に親タグが必要です"<category>"

于 2012-05-19T14:16:02.383 に答える
1

他のノードをカプセル化するルート要素が必要です。

おそらく、すべてのノードを含め<categories>て終了します。</categories><category>

于 2012-05-19T16:08:11.177 に答える