2010-08-08 64 views
3

基本上我試圖調用一個函數(函數1),它從另一個函數(函數2)獲取結果。這個函數2正在進行ajax調用。如何獲得jQuery AJAX調用的結果,然後調用另一個函數

因此,代碼會是這樣:

function f1() { 
    var results = f2(); 
} 

function f2() { 
    $.ajax({ 
     type: 'POST', 
     url: '/test.php', 
     success: function(msg){ 
     } 
    }); 
} 

我知道這是我成功的功能顯示一個警告,我得到的結果。但是,我們如何才能使這個結果回傳?

我tryed做這樣的事情裏面函數2沒有成功:

回報味精;

感謝您的幫助

+0

您在meder的文章中評論了嘗試使用相同的ajax進行多個調用。你可以擴展這個嗎? – 2010-08-12 06:02:16

回答

4

從理論上講,這是可能使用jQuery的async: false設置。該設置使呼叫同步,即瀏覽器等待完成。

雖然這被認爲是不好的做法,因爲它可能會凍結瀏覽器。您應該重新構建您的腳本,以便在success回調中代替f1執行相關操作。我知道這比你在f1()中做的不太方便,但它是處理Ajax異步特性的正確方法。

2

可以有力地發出請求同步(有點失去了Ajax的利益),但讓你的代碼工作:

function f2() { 
    var ret = false; 
    $.ajax({ 
     type: 'POST', 
     url: '/test.php', 
     async:false, 
     success: function(msg){ 
      ret = msg 
     } 
    }); 
    return ret; 
} 

否則,您必須對您的success函數添加一個回調,如果你想保留它異步..

function f2() { 
    $.ajax({ 
     type: 'POST', 
     url: '/test.php', 
     async:false, 
     success: function(msg){ 
      doSomething(msg); 
     } 
    }); 
} 
+0

感謝您的答案球員 據我所知這是一個異步/同步問題... 我的purpuse是爲了避免有多次相同的AJAX調用,當我有幾個不同的事情要做的調用結果。 所以我一直在尋找的方式是由一個,2個或更多不同的功能調用AJAX函數... 但據我瞭解,如果我需要保持異步模式,我需要做一個不同的方式。 – kire 2010-08-08 18:31:08

相關問題