2012-10-23 24 views
1
<script> 
function SimpleMS() { 
    $('#ImagePlaceHolder').append("<img src='../images/ajax-loader.gif' />"); 
    alert(1); 
    $.ajax({ 
     async: false, 
     url: '@Url.Action("SimpleMACSerial")' 
         + "?MACSerial=" + $('#SerialMAC').val() 
         , 
     dataType: "json", 
     cache: false, 
     success: function (data) { 
      alert(2);      
     }, 
     error: function (data) { 
      alert('Error'); 
     } 
    }); 
    alert(3); 
} </script> 

我看到以下結果JQuery的出DIV appenditure的序列呈現

「1」

「2」

「3」

最後ajax-loader.gif出現!

它應該顯示在第一次警報之前!

這是怎麼發生的?

謝謝!

回答

0

這是關於瀏覽器如何處理javascript的。在這種情況下,你會發現你使用的瀏覽器首先執行了它的所有javscript,然後纔開始解釋它對源代碼所做的更改,比如新的圖像標籤,它在第一次提醒之前就已經存在了,但現在只能獲取渲染。

+0

什麼是一個很好的解決方案? – Pinch

+0

這取決於你試圖實現的目標 – Jasper

+0

也許,像世界其他地方一樣使用異步ajax確實是一個解決方案。因爲在這種情況下,javascript不會等待ajax請求的答案,瀏覽器會暫停並可能決定在請求仍在加載時呈現圖像。 – Jasper