2010-05-11 91 views
1

我遇到了JQuery Ajax調用問題。響應始終爲空,因爲回調函數在get_friends請求完成之前執行。有什麼我失蹤?提前致謝。JQuery get/ajax調用執行回調而無需等待響應

jQuery(document).ready(function($) { 
    $('#btn_update').click(function() { 

     url = '/get_friends/'; 
     $.get(url, {}, function(response){ 
      alert(response); 
     }); 
    }); 
}); 

回答

1

我的同事能夠幫助我。我不得不添加「返回false」。在點擊功能的末尾。

+1

呃......這是一個*提交*按鈕。 – 2010-05-11 23:54:08

+0

在你的事件處理函數中使用下面的代碼而不是'return false;'會更清潔/更好: 爲你的函數添加一個參數,最好命名爲* e *(for * event *)。然後在函數的開頭調用'e.preventDefault();'。 這具有防止默認操作(常規表單提交等)的優點,即使代碼中的某些內容出錯並導致處理程序提前返回。 – ThiefMaster 2010-11-12 00:13:40

0

我沒有看到任何會解釋行爲的東西。事實上,我複製並粘貼了該代碼,並且只是更改了URL,並獲得了預期的結果(在顯示來自該調用的響應之前,它等待該呼叫完成)。所以不,你不會錯過任何在那個代碼,這個問題必須在別處。

OT(或許):你是否聲明url作爲包含此代碼的作用域中的變量?否則,您將創建一個implicit global variable,這是一件壞事(tm)。 :-)但這並不能解釋你所描述的行爲。

0

您能指定$ .get的最後一個參數嗎?它可以是$ .ajax的dataType值。嘗試使用「文本」,看看你真的從服務器收到什麼。然後,您可以更改爲您真正需要的類型(請參閱http://api.jquery.com/jQuery.ajax/