2013-04-29 22 views
0

我的要求是:當用戶點擊一個按鈕直到數據被提取時,顯示一個文本「Searching ...」。我正在使用JSON函數來獲取數據。 但問題是我能夠顯示「正在搜索...」文本按鈕上點擊只在Firefox中,而不是在鉻或IE瀏覽器。我也嘗試過發送也,但即使達特作品只在Firefox。我讀過async = false,導致這個問題,但我只需要這個同步調用。在執行json函數時顯示文本

<span id="searchWait" >&nbsp;</span> 

<script> 
function getPromptSearchResults() { 
    $('#searchWait').html('Searching...'); 

    $.ajax({ 
     async: false, 
     url: 'Application.aspx/getPromptSearchResults', 
     data: JSON.stringify({ 
      some parameters 
     }), 
     success: function (data) { 
      $('#searchWait').html(''); 
      something 
     }, 
     error: function (parameters) { 
      something 
     } 
    }); 

    return something; 
} 
</script> 
+1

我看不到您顯示搜索文本的位置。它總是隱藏的。 – Amy 2013-04-29 19:36:29

+0

該風格是一個錯字。我已糾正它。 IE/Chrome/Safari阻止異步錯誤的所有請求,如何解決此問題。我讀過回調地址。如何在這裏使用回調? – Kamayani 2013-04-29 21:37:12

+0

請參閱http://stackoverflow.com/questions/9755485/stop-browser-locking-during-synchronous-ajax。它解決了我的問題。 – Kamayani 2013-05-01 21:52:53

回答

0

你需要調用$('#searchWait').show();,以便它改變了樣式屬性,不再隱藏。

看看這個小提琴:http://jsfiddle.net/ambiguous/zLnED/

那不是我的小提琴,但我會建議改變超時100-500的更高的可靠性。

+0

顯示和隱藏不是問題,該風格是一個錯字。我已糾正它。 IE瀏覽器所有的瀏覽器都會阻止asyn的所有請求,如何解決這個問題。我讀過回調地址。如何在這裏使用回調? – Kamayani 2013-04-29 21:36:19

+0

我建議的唯一的事情就是把'$('#searchWait')。html('Searching ...');'放在它自己的函數中,並從該函數中調用getPromptSearchResults。還可以使用'console.log'語句來調試代碼的執行方式。 – edhedges 2013-04-30 12:47:55

+0

我已經嘗試過,它不工作,因爲當你設置async爲false時,瀏覽器被阻止。 – Kamayani 2013-04-30 18:17:46