2013-02-27 78 views
0

我想在ajax調用之前和期間向用戶顯示「加載程序」。這裏的代碼(簡化版...)多個jQuery的HTML()分配不工作

$(document).ready(function() { 
    $("#btn").click(function(){ 
     $("#log").html("loading ajax call..."); 
     anotherFunc(); 
    }); 
}); 


function anotherFunc(){ 
    $.ajax({ 
     type: "GET", 
     url: correct_url, 
     data: data_to_send, 
     dataType: "jsonp", 
     success: function(data){ 
     $("#log").html("new html"); 
     } 
    }) 
} 

問題是「加載ajax調用...」從不出現。我只看到「新的html」顯示。單曲阿賈克斯#log修改調用工作完全獨自(沒有其他)

有沒有另一種方法呢? 我做錯了什麼?

ps。我也嘗試在另一個id(#log2)中寫入相同的結果。

+0

最有可能您的'.ajax'具有'async:false'。將其更改爲'async:true'(或將其完全移除),它將起作用。 – 2013-02-27 22:00:37

+1

顯示'(...)'裏面的東西你確定你的ajax調用沒有很快完成嗎?你使用的是什麼瀏覽器?不同的瀏覽器以不同的速度渲染,如果你的ajax調用速度非常快,那麼你將永遠看不到加載字符串。 – Brandon 2013-02-27 22:01:01

+1

難道這只是因爲AJAX調用返回得如此之快以至於您只是看不到原始文本? – Steve 2013-02-27 22:01:11

回答

1

很可能一切正常,但AJAX調用返回非常快(特別是如果您在本地測試)。要查看是否屬於這種情況,請執行以下操作:

$(document).ready(function() { 
    $("#btn").click(function(){ 
     $("#log").html("loading ajax call..."); 
     setTimeout(function(){anotherFunc();},2000); 
    }); 
});