Как поставить отправку данных через POST? - PullRequest
1 голос
/ 06 сентября 2010

Добро пожаловать,

У меня есть вопрос.

На моем веб-сайте есть форма, позволяющая пользователю отправлять данные через POST (ajax).Проблема в том, что когда пользователь отправляет поле, запускает запрос ajax ... если сервер свободен или пользовательская сеть работает быстро, все работает очень гладко.Пользователь может отправлять сообщения очень быстро, и все работает.

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

IМне интересно, можно создать какую-то очередь в Jquery.

Например, я получу

function send_message()
{

//conditions
if, not empty, les then xx words, etc
//conditions

//if conditions ok
add_to_sedn_queque($somedata);
//if conditions ok

}

И это должно быть выполнено немедленно.

add_to_sedn_queque () <- я просто имитирую это, чтобы показать, что я хочу иметь. </p>

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

Я не прошу Вас писать отправку для меня, у меня уже есть работа.

То, как создать эту очередь, может быть на простом примере.

С уважением

1 Ответ

1 голос
/ 06 сентября 2010

Я бы использовал .queue() :) Примерно так:

function add_to_send_queque(data) {
   $(document).queue('ajaxQueue', function(n) {
      $.ajax({
        url: "something",
        type: "POST",
        data: data,
        complete: n
   });
}

Это означает, что вы помещаете ваши звонки в пользовательскую очередь на document, называемую ajaxQueue,Когда каждый запрос завершается (добавьте метод success, если это необходимо, это не повлияет на это), он вызывает следующий элемент в очереди или оставляет очередь открытой для немедленного выполнения следующего (если тот, который простоFinished был последним в очереди).

Обязательно используйте complete здесь, а не success для вызова n, поэтому он срабатывает независимо от того, была ли ошибка ... в противном случае ваша очередь будетожидайте.

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

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