2013-12-19 25 views
-6

我正在對MVC4中的視圖進行ajax調用。 代碼是:有無論如何做一個同步Ajax調用?

$.ajax({ 
    contentType: 'application/json; charset=utf-8', 
    method: 'GET', 
    url: "Gateway/DB_Rola?count="+(n+1), 
    data: things[n], 
    success: function (Data) { 
    var mera_obj = Data.key; 
    document.getElementById("Param2").value = '(' + mera_obj.Response_Code + ' , ' + mera_obj.Response_Description + ')'; 
    }, 
    error: function() { 
     alert("ERROR: can't connect to Server this time"); 
     return false; 
    } 
}); 
alert("call done for "+(n)); 

當我使這個呼叫,AJAX請求被髮送到URL和響應之前,alert執行這是AJAX外部。我想等待迴應,然後再進一步。我的意思是同步ajax調用。

+1

您是否嘗試過搜索「synchronous ajax call」?你很可能不需要它是同步的。 – Blender

+0

已經回答了很多次 –

+0

請在這裏發帖前做一些調查。這是Google輕鬆回答的問題。甚至jQuery.com – Deryck

回答

3

是的。將async標誌設置爲false:

$.ajax({ 
    contentType: 'application/json; charset=utf-8', 
    method: 'GET', 
    async: false, 
    ... 
+0

所以,出於好奇...因爲我很難看到使用同步Ajax調用。當您將此選項設置爲false時實際發生了什麼?收到回覆時會發生什麼?在ajax調用之後的代碼之前,錯誤/成功處理程序是否被評估?例如,在Marium問的問題中,成功處理程序是否會在警報(ajax方法之外的那個)之前執行? – Leo

+1

如果將其設置爲false,則它基本上變爲完全阻塞的表達式;您可以設置一個全局變量,並在完成後對其進行更新,然後在函數以新的更新後的全局變量值結束後,逐行繼續。不,成功處理程序將在通話完成後發生,並在隨後發出警報。 – brandonscript

+0

對,我懷疑這是怎麼回事。但是,我仍然在努力認識到我可以從中受益......我從來沒有實施或遇到過可能需要這種行爲的場景。我只能想象這種設置會產生可怕的用戶體驗,我只會做一個完整的帖子回到服務器。無論如何,感謝你的回覆隊友 – Leo

相關問題