2009-07-25 22 views
0

我想我錯過了一些非常基本的東西,也許有人可以填補我的空間。我用了兩個地方的ajax調用。所以現在我試圖通過使該調用返回一個值來重用該調用。它看起來是這樣的:有沒有辦法從jQuery的Ajax調用返回一個值(xml在我的情況下)

function getInfo() 
{ 
    $.ajax({ 
    type: "GET", 
    url: "../ajax.aspx?action=getInfo&id=4", 
     dataType: "xml", 
    async: false, 
    error: function() { 
     alert("Something went wrong."); 
    }, 
    success: function(xml) { 
      // Do some extra work here 
    $(xml).find("room").each(function() { 
     // Do something based on the xml 
    }); 
    // Something else can use this XML so return it too. 
      // Why does this return not work??? 
      return xml; 
    } 
}); 
} 

所以其他地方的腳本我正在調用該函數

var xml = getInfo(); 
// Try do something with it now but it says that it is undefined 

,當我說這說,這是不確定的,我講的螢火蟲。

回答

0

關閉異步功能是imho不是一個很好的AJAX編程風格。你將失去這項技術的很多優點。 從jQuery文檔:

注意,同步請求可以 暫時鎖定瀏覽器, 禁用任何動作而 請求是活動的。

如果需要無論如何要做到這一點: $就返回它創建的XMLHttpRequest對象。而你的getInfo方法也應該返回,所以你的代碼應該像這樣修改:

function getInfo() 
{ 
    return $.ajax({ 
    type: "GET", 
    url: "../ajax.aspx?action=getInfo&id=4", 
     dataType: "xml", 
    async: false, 
    error: function() { 
     alert("Something went wrong."); 
    }, 
    success: function(xml) { 
      // Do some extra work here 
     $(xml).find("room").each(function() { 
      // Do something based on the xml 
     });  
     // Something else can use this XML so return it too. 
      // Why does this return not work??? 
      return xml; 
    } 
}).responseText; 
} 


var xml = getInfo(); 
+0

是的異步假不是一個好主意。那是我在玩各種選項時偶然留下的。它現在被刪除。謝謝:) – uriDium 2009-08-02 09:17:13

相關問題