2012-12-19 114 views
1

嘗試使用ajax從xml文件加載內容時,它會顯示「undefined」onload。只要刷新頁面,內容就會顯示出來。使用ajax加載xml文件顯示undefined

這裏是我的代碼

$.ajax({ 
     type: "GET", 
     url: "xml/FIB.xml", 
     dataType: "xml", 
     success: function(xml){ 
      var titletext=$(xml).find('Quiz').children().attr("name"); 
      $(".title_text").append(titletext); 
      $(xml).find('question').each(function(){ 
        nooffib=$(this).find("ques").length; 

         for(var a=0;a<nooffib;a++){ 
         n=$(this).find('ques').eq(a).text(); 
         questionarray[a]=n.replace("[blank]","<input id='"+a+"'type='text' class='blanktextbox' onkeyup='btnvisible()'/>"); 

        } 
      }) 
     } 
    });  
+1

您能否提供考試您使用的代碼是? – PhearOfRayne

+0

爲什麼你不用編碼來編輯你的答案? – vusan

回答

1

也許未定義意味着您正在引用的dom元素尚未在創建ajax調用時創建,刷新後會創建元素「#your_selector」。嘗試在文檔準備好或特定事件後執行,例如一鍵點擊,換句話說,檢查是否已#your_selector使得AJAX調用之前已創建:

$("#your_selector").on("click", function(event){ 
//execute your ajax call 
}); 

$("#your_selector").live("click", function(){ 
    //execute your ajax call 
}); 

$(document).ready(function() { 
     //execute your ajax call 
}); 

一個完整的例子是:

function test(){ 
    $.ajax({ 
    type: "GET", 
    url: "xml/FIB.xml", 
    dataType: "xml", 
    success: function(xml){ 
     var titletext=$(xml).find('Quiz').children().attr("name"); 
     $(".title_text").append(titletext); 
     $(xml).find('question').each(function(){ 
       nooffib=$(this).find("ques").length; 

        for(var a=0;a<nooffib;a++){ 
        n=$(this).find('ques').eq(a).text(); 
        questionarray[a]=n.replace("[blank]","<input id='"+a+"'type='text' class='blanktextbox' onkeyup='btnvisible()'/>"); 

       } 
     }) 
    } 
}); 
} 

$("#your_selector").live("click", function(){ 
    test(); 
}); 
+0

謝謝MR忍者.... –

2

你正在做的是正確的。但你提供的網址不正確。通過更改網址來解決問題。

+0

Rohit Url正確無誤地在我的服務器上正常工作。 –

+0

你似乎沒有理解這個問題。 url對於用戶來說是主觀的,而不是任何人都可以在沒有看到實際代碼和xml位置的情況下感知的全局參數。 – iOSAndroidWindowsMobileAppsDev