2013-06-19 84 views
0

我正在.Net網絡應用程序中工作。ajax async:false,阻止GIF動畫加載圖像

我做了幾個同步調用ajax(async:false),因爲我需要得到ajax結果的值在本地可變性。

但是如果我在進入ajax時看到一個可見的加載,它在firefox中工作正常,Chrome和IE不支持。

請幫助我,任何解決此問題?

function findtempvalues(tempparam) { 
       var tempnamevalues = new Array(); 
       $.ajax({ 
        type: "POST", 
        url: "Services/Locale.asmx/templatename", 
        contentType: "application/json; charset=utf-8", 
        data: JSON.stringify({ tempwidpath: tempparam }), 
        dataType: "json", 
        async: false, 
        success: function (result) { 
         tempnamevalues = result.d; 
        }, 
        error: function() { 
         alert("error"); 
        }, 
        timeout: 3000 
       }); 
       return tempnamevalues; 
      } 
+1

您應該重構代碼以異步工作。這種阻塞不會發生。 – 2013-06-19 09:24:58

+0

解決方案1:預載您的gif。解決方案2:在進行ajax調用之前加載可見。爲首先啓用gif的ajax調用創建一個包裝函數,然後執行傳遞適當變量的ajax調用。看看是否在ajax調用之前添加一個小延遲。 – Sharky

+0

我試着在ajax啓動之前使用.prepend添加一個新的div。但它仍然不工作 –

回答

0

異步調用和.done(function(data){ //handle data... })檢索數據。

0

爲了使異步調用,並顯示加載消息

function findtempvalues(tempparam) 
{ 
    $('#loadingMessage').css('visibility', 'visible'); 

    $.ajax({ 
     type: "POST", 
     url: "Services/Locale.asmx/templatename", 
     contentType: "application/json; charset=utf-8", 
     data: JSON.stringify({ tempwidpath: tempparam }), 
     dataType: "json", 
     async: true, 
     success: function (result) { 
      callback(result) 
     }, 
     error: function() { 
      alert("error"); 
     }, 
     complete: function() { 
      $('#loadingMessage').css("visibility", "hidden"); 
     }, 
     timeout: 3000 
    }); 
} 

function callback(result) 
{ 
    var tempnamevalues = new Array(); 
    tempnamevalues = result.d 

    // continue ... 
} 

讓您的結果的回調函數,不作「迴歸」

而在你的HTML你有類似的東西:

<span id="loadingMessage" style="visibility: hidden;">Loading ...</span>