2010-04-27 40 views
2

編輯:最初的問題是由於其他地方的一個愚蠢的語法錯誤,我修好了。我有一個新的問題,雖然,低於jquery.ajax()調用(EDITED)返回的數據的一個簡短問題

如上所述我有以下jquery.ajax呼叫:

$.ajax({ 
    type: 'GET', 
    url: servicesUrl + "/" + ID + "/tasks", 
    dataType: "xml", 
    success : createTaskListTable 
}); 

createTaskListTable函數被定義爲

function createTaskListTable(taskListXml) { 
    $(taskListXml).find("Task").each(function(){ 
     alert("Found task")  
    }); // each task 
} 

問題是:這並未」 t工作,我得到一個錯誤,說taskListXml未定義。 JQuery文檔指出,成功函數傳遞三個參數,第一個參數是數據。

如何將由.ajax()返回的數據以我自己選擇的變量名傳遞給我的函數。

我現在的問題是,我從以前的ajax調用中獲取XML!這怎麼可能?前一個函數定義爲function convertServiceXmlDataToTable(xml),因此它們不使用相同的變量名稱。

完全混淆。這是一些緩存問題?如果是這樣,我如何清除瀏覽器緩存以擺脫早期的XML?

謝謝!

+4

檢查Firebug中的AJAX響應並確保它是有效的XML。 – SLaks 2010-04-27 15:31:23

+0

如果您獲得的數據是有效的,這應該起作用。 – 2010-04-27 15:32:23

+0

如果'taskListXml'未定義,你不會得到任何錯誤:函數只會返回而不做任何事情。你到底在做什麼錯誤? – interjay 2010-04-27 15:43:24

回答

1

查看我的評論。如果您使用IE,則緩存GET AJAX請求。 jQuery可以通過向請求添加一個隨機查詢字符串變量來解決這個問題。只需將您的AJAX調用改成這樣:

$.ajax({ 
    type: 'GET', 
    url: servicesUrl + "/" + ID + "/tasks", 
    cache: false, 
    dataType: "xml", 
    success : createTaskListTable 
}); 

即會自動添加隨機查詢字符串,從而防止瀏覽器緩存的要求。

0

嘗試內嵌定義這樣的回調:

success: function createTaskListTable(data, textStatus, xhr) { 
    console.dir(data, textStatus, xhr); 
} 

如果數據確實正在返回空值,則可能會從其他領域,尤其是XHR一些見解。

請注意,調用錯誤回調(xhr,textStatus,errorThrown)。

相關問題