2012-10-23 23 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