2013-04-27 2 views
-3

Я видел код для какой-либо чат-системы, в которой говорится о некоторых вещах, подобных ниже, чтобы получить сообщения чата. Я видел, что AJAX является асинхронным. setTimeout здесь периодически обновляет чат-журнал. Так что в целом это асинхронная связь? $ .ajax является синхронным или асинхронным? Каково его значение здесь ????

http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a-simple-web-based-chat-application/

Asynchrounous связь означает, что сервер должен послать данные клиента, если есть какие-либо новые данные без клиента подслушивания сервера. Не так ли? Пожалуйста, дайте мне подробное объяснение того, что происходит ниже. Любое лучшее решение о том, как чат-журнал может автоматически обновляться с помощью jquery-ajax

, если мы проверяем каждые х секунд и перезагружаем все окно снова, что нужна ли здесь $ .ajax? просто создавая комплекс кода .... в чем разница между использованием только запроса php-sql к базе данных и setimeout .... стоимость первого случая: весь чат перезагружается снова и снова + ajax-вызов, стоимость второго case: весь чат загружается снова и снова ... поэтому я не понимаю, в чем преимущество использования ajax в соответствии с производительностью .... на самом деле я вижу, что позже лучше ...... Разве это не так? ???

function updateMsg() 
{ 
$.ajax({ 
     url:"db.php", 
     type:"POST", 
     success:function(data){ 
     } 
}); 
setTimeout("updateMsg()",7000); 
} 

ответ

0

По умолчанию является асинхронной:

асинхронной (по умолчанию: правда) Тип: Boolean По умолчанию все запросы посылаются асинхронно (т.е. это устанавливается истина по умолчанию). Если вам нужны синхронные запросы , установите для этого параметра значение false. Междоменные запросы и dataType: запросы «jsonp» не поддерживают синхронную работу. Обратите внимание, что синхронные запросы могут временно блокировать браузер, отключение любых действий, пока запрос активен. Начиная с jQuery 1.8, использование async: false с jqXHR ($ .Deferred) устарело; вы, , должны использовать параметры успешного/ошибочного/полного обратного вызова вместо соответствующих методов объекта jqXHR, таких как jqXHR.done() или устаревший jqXHR.success().

function updateMsg() { 
     $.ajax({ 
      url: "db.php", 
      type: "POST", 
      async: true, //or false 
      success: function (data) {} 
     }); 

    } 
+0

если он асинхронный, то почему мы имеем SetTimeout()? Не означает ли асинхронность, что как только новое сообщение будет сохранено в базе данных, оно должно отправить это сообщение клиенту без перезагрузки или запроса клиента? Последние сообщения чата видны только с помощью setTimeout() –

+0

Я просто обновил код с помощью async, чтобы доказать вам, как это работает –

+0

спасибо ... но если приведенный выше код должен обновить чат-журнал с помощью последних сообщений, просто используя async: true, то почему в приведенном ниже коде в этом учебнике используется setimeout()? Async означает, что журнал чата должен обновляться всякий раз, когда отправляется новое сообщение ... разве вы не говорите? http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a-simple-web-based-chat-application/ –

0

Вы можете использовать async параметров. async парам определяет: является запрос синхронным или асинхронным

$.ajax({ 
     url:"db.php", 
     type:"POST", 
     async: true, // async: false 
+0

llya. Если в вышеприведенном блоке кода нет параметра асинхронизации, он по умолчанию считается синхронным или асинхронным? Кроме того, просто используя async: true param, клиент получает данные из базы данных всякий раз, когда новые данные добавляются в него без запроса сервера? –

+0

@SaKan по умолчанию это 'истина' и да – Ilya

+0

ok ... if $ .ajax isync, тогда сервер должен обновлять сообщения чата без вызова клиента settimeout ... не так ли? объясните, пожалуйста, как это работает –

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