[英]Problems with ajax load in safari and chrome
在Safari和Chrome中運行Ajax請求時出現問題,在Firefox中卻沒有問題
var doStuff = function(){
callLoadingScreen();
jsRoutes.controllers.SomeController.someServerSideMethod().ajax({
//ajax stuff
});
closeLoadingScreen();
}
在Safari和chrome中,調用doStuff()時會跳過callLoadingScreen()方法,但會發送ajax請求,並且僅在ajax請求完成后才加載callLoadingScreen()方法。
在Firefox中,一切都按預期運行,但在chrome和safari中則無效。 這是一些游戲問題,還是jquery問題。 我已經嘗試了很多修復程序,但似乎都無法正常工作。是否有我缺少的東西,我之前進行過這種加載,但不記得有這個問題。
歡迎任何幫助或反饋。 謝謝。
假設您的代碼未使用async: false
運行ajax調用,那么您永遠都不要這樣做 ,它不應在任何瀏覽器上都可以正常工作 。
在調用closeLoadingScreen
之前,您需要等待Ajax調用完成:
例如
var doStuff = function(){
callLoadingScreen();
jsRoutes.controllers.SomeController.someServerSideMethod().ajax({
//ajax stuff
complete: function(){
closeLoadingScreen();
}
});
}
在您的示例中,它是這樣做的:
callLoadingScreen();
closeLoadingScreen();
// Get response from Async Ajax call here sometime much later!
如果您想使用promise,請嘗試以下方式:
var doStuff = function(){
callLoadingScreen();
jsRoutes.controllers.SomeController.someServerSideMethod().ajax({
//ajax stuff
}).then(closeLoadingScreen);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.