Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   как в jquery в ajax запросе отслеживать изменения длинны ответа. (https://javascript.ru/forum/jquery/51695-kak-v-jquery-v-ajax-zaprose-otslezhivat-izmeneniya-dlinny-otveta.html)

happy_Mikhail 16.11.2014 12:59

как в jquery в ajax запросе отслеживать изменения длинны ответа.
 
success: function(data){
/*на стороне сервера крутится цикл и параметр data постоянно 
увеличивается .
 выглядит примерно так
|первая строка|
|вторая строка|
|третья строка|
Мне нужно отслеживать размер data и при его увеличении производить некие действия с последней строкой, например на экран её вывести.
*/
  }

danik.js 16.11.2014 13:32

Так ты передавай серверу номер, с какой строки тебе нужен результат.
Если у него для тебя что-то новенькое есть - он передаст. Если нету - ответ будет, допустим, пустым.

А постоянно гонять одни и те же данные между клиентом и сервером - ну тупо же ))

happy_Mikhail 16.11.2014 14:02

что-то я не совсем понял. вот например у нас такая серверная сторона
while($users_send_list){
//например тут письмо отравляется 
$send_OK = $mail->send($user_email);
if($send_OK !== false)
echo "Письмо пользователю ".$user_email." отправлено";
}


Вот, а аякс просто запускает скрипт рассылки писем.
как передать то, что Вы предложили?

Ну или создать масивчик перед циклом, и добавлять в него отосланные адреса, а после отправки выбирать последнюю запись при каждой итерации...

danik.js 16.11.2014 14:14

А, то есть у тебя один запрос, а не несколько.
Во-первых, нужно делать flush() после echo. Без этого сервер будет удерживать все строки в буфере, и не отдаст пока не завершится цикл (не отработает скрипт).
Ну а во вторых, success вызывается только по завершению запроса.
Я даже не уверен что задуманное вообще реализуемо через XMLHttpRequest.

Посмотри на событие "progress" (проще без jQuery, хотя нужно посмотреть доки по $.ajax). Его кстати нет в старых браузерах.

Однозначно можно сделать на вебсокете, точно не знаю, но по-моему для этого надо ставить расширение для PHP на сервере. Ну и не кроссбраузерно оно.

Если с progress не получится, то можно попробовать на айфрейме.


Часовой пояс GMT +3, время: 21:13.