Jquery для цикла не останавливается - PullRequest
0 голосов
/ 19 октября 2010
   for (var i=0;i<ToArray.length;i++) {
    $.post('jquery/messages.php',{To:ToArray[i],subject:subject,msg:msg},function(data){jAlert(data);}); 
  } 

Пользователь может отправлять короткие сообщения другим пользователям. Имена являются запятыми, и после того, как я разделю строку, я хочу отправить одно и то же сообщение разным пользователям с помощью цикла for.

если что-то идет не так (например, такого пользователя нет в базе данных), сервер предупреждает пользователя и останавливает процесс. Если пользователь нажал кнопку «ОК», процесс продолжается.

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

Ответы [ 2 ]

0 голосов
/ 19 октября 2010

Как первый проход, это крайне неэффективно.Не лучше ли упаковать объект ответа с сообщением, темой и списком пользователей и распаковать сервер?Это уменьшило бы пропускную способность и задержку на стороне клиента с O (n) до O (1)!Что-то вроде:

$.post('jquery/messages.php',{To:ToArray,subject:subject,msg:msg},function(data){jAlert(data);});

Это даст вашему серверу возможность попробовать и отправить каждому пользователю и отправить обратно сообщение всем пользователям, для которых сообщение не удалось, а не только первому.

0 голосов
/ 19 октября 2010

Это может быть связано с тем, что режимом по умолчанию для $ .post является асинхронный запуск, и поэтому цикл проходит до конца, сообщения ставятся в очередь браузером.Когда, наконец, возникает ошибка, цикл завершился и последняя запись была на месте.

Попробуйте изменить использование $ .ajax с async, установленным в false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...