我打電話這反過來發送Ajax請求,並給出response.I'm得到的結果在回調方法,如「成功」 JavaScript方法。
這裏Ajax返回一些結果,同時javascript方法返回結果(如undefined)。
但它應該只返回ajax結果。
我發現的問題是,Javascript和Ajax都同時執行。
如何阻止它們並首先執行Ajax,並且它的結果必須發送到返回結果的函數。
任何想法是高度讚賞.. :)
回答
默認情況下,$.ajax
(以及使用它的任何東西,如$.post
)使異步請求。您可以通過指定async:false
(請參閱documentation)使請求同步。不過,我不建議您使用同步AJAX請求,因爲它會降低性能並導致糟糕的用戶體驗。相反,考慮在結果完成時使用在成功處理程序中調用的回調。
這裏有兩個任意簡單的例子,其中我們有一個錨點,我們希望從單擊AJAX調用的結果中替換文本。兩者都做同樣的事情,但第二個是首選,因爲它保持了瀏覽器的響應。
同步:
function invokeAjaxSync() {
var text;
$.ajax({url: '/path/to/resource', async:false, success: function(result) {
text = result.toString();
}}); // will wait until this call is complete
return text;
}
$('a.example').click(function() {
$(this).text(invokeAjaxSync()); // works, but the browser will be unresponsive while waiting for a response.
});
異步(更好):
function invokeAjaxAsync(callback) {
$.ajax({url:'/path/to/resource', success: function(result) {
callback(result);
}});
}
$('a.example').click(function() {
var $this = $(this);
invokeAjaxAsync(function(result) {
$this.text(result.toString());
}); // browser will remain responsive, but still update text when the AJAX call completes.
});
如果我使用async:false,那麼直到ajax響應來臨,JavaScript方法將停止執行,並且在結果到來之後只有JavaScript方法返回結果? –
如果您使用'async:false',您的調用方法將等待,直到收到AJAX響應(或超時或中止),然後完成函數的結果。 – HackedByChinese
您可以使用同步數據鎖定瀏覽器。此外,它已被棄用。 – Yatrix
- 1. 返回AJAX回調返回
- 2. Jquery:在返回之前等待回調
- 3. ';'在返回之前
- 4. Ajax回調的返回值?
- 5. 在Ajax調用返回原因問題之前將重定向?
- 6. 在Java代碼完成之前,Dojo ajax調用返回?
- 7. 在返回之前取消jQuery AJAX調用?
- 8. ajax回調返回0
- 9. ReactJS - 如何在Ajax調用中返回正確返回回車
- 10. 腳本注入並在返回結果前做出ajax調用
- 11. 從jQuery Ajax調用返回時出錯
- 12. 在PHP腳本結束之前PHP向用戶返回輸出
- 13. AJAX調用返回列表
- 14. Ajax調用不被返回
- 15. asp.net返回Ajax調用
- 16. AJAX調用返回'undefined'
- 17. 函數返回Ajax調用
- 18. 從jquery返回ajax調用
- 19. Ajax調用並返回json?
- 20. Ajax調用返回undefined
- 21. 返回如果函數返回jQuery AJAX輸出
- 22. 如果AJAX調用返回false,則取消Sammy「之前」
- 23. Jquery Ajax在ActionResult之前拋出錯誤返回
- 24. JavaScript - 返回之前的值?
- 25. 如何在更新之前使用返回來返回列?
- 26. 返回AJAX內部的AJAX調用
- 27. Extjs,返回Ajax返回值
- 28. 在Wordpress中的AJAX調用返回0
- 29. Angular Typeahead在API調用返回之前返回 - 導致'Undefined Length'錯誤
- 30. 返回untemplated輸出
你可以把一個jsfiddle.net顯示發生了什麼? – JamesSwift
複製http://stackoverflow.com/questions/12560879/javascript-executes-before-getting-result-from-a-ajax-call的 –
它幾乎總是更好地重構你的代碼,以便爲Ajax的異步特性。 (使用同步的Ajax通常是錯誤的解決方案。)一個常用的技術是不是有你的函數返回一個值的Ajax調用完成後調用回調到返回回傳時讓它將回調作爲參數,然後。 – nnnnnn