2013-04-29 3 views
0

Мое требование: когда пользователь нажимает кнопку до тех пор, пока данные не будут извлечены, отобразите текст «Поиск ...». Я использую функцию JSON для извлечения данных. Но проблема в том, что я могу отображать текст «Поиск ...» при нажатии кнопки только в Firefox, а не в Chrome или IE. Я также попробовал beforeSend, но даже tat работает только в 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

+0

этот стиль был опечаткой. Я исправил это. IE/Chrome/Safari блокирует все запросы в async false, как решить эту проблему. Я прочитал обратные вызовы. Как использовать обратный вызов здесь? – Kamayani

+0

см. Http://stackoverflow.com/questions/9755485/stop-browser-locking-during-synchronous-ajax. Он разрешил мою проблему. – Kamayani

ответ

0

Вам необходимо позвонить $('#searchWait').show();, чтобы он изменил атрибут стиля и больше не скрыт.

Заканчивать эту скрипку: http://jsfiddle.net/ambiguous/zLnED/

Это не моя скрипка, но я бы рекомендовал изменения тайм-аут на 100-500 для большей надежности.

+0

показать и скрыть не проблема, этот стиль был опечаткой. Я исправил это. IE Chrome все браузеры блокируют все запросы в asyn false, как решить эту проблему. Я прочитал обратные вызовы. Как использовать обратный вызов здесь? – Kamayani

+0

Единственное, что я хотел бы предложить, это положить '$ ('# searchWait'). Html ('Searching ...');' в своей собственной функции и вызвать 'getPromptSearchResults' из этой функции. Также используйте инструкции 'console.log' для отладки вашего кода. – edhedges

+0

Я уже пробовал, что он не работает, поскольку браузер блокируется, когда u устанавливает async как false. – Kamayani

Смежные вопросы