JQuery-AJAX: больше нет запроса после тайм-аута и задержки в отправке формы - PullRequest
2 голосов
/ 02 июня 2010

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

Это уже работает.

Что бы я достиг сейчас:

1) Реализация тайм-аута: это уже работает, но как только происходит тайм-аут, новый запрос больше не работает.

2) Реализация задержки в запросе результатов: задержка должна быть реализована так, чтобы не каждый флажок приводил к запросу POST.

Это то, что у меня сейчас есть:

function update_listing() {

    // remove postings from table
    $('.tbl tbody').children('tr').remove();

    // get the results through AJAX
    $.ajax({
                    type: "POST",
                    url: "http://localhost/hr/index.php/listing/ajax_csv", 
                    data: $("#listing_form").serialize(),
                    timeout: 5000,
                    success: function(data) {
                                    $(".tbl tbody").append(data);
                                },
                    error: function(objAJAXRequest, strError) {
                                    $(".tbl tbody").append("<tr><td>failed " + strError + "</td></tr>");
                                }
                    });

    return true;

}

Результаты теперь передаются в виде строк таблицы HTML - я преобразую их в CSV / JSON на следующем шаге.

Большое спасибо за ваш совет.

1 Ответ

2 голосов
/ 02 июня 2010

Для задержки:

(function () {

var timeout;

function update_listing() {

    // remove postings from table
    clearTimeout(timeout);
    timeout = setTimeout(function () {

    $('.tbl tbody').children('tr').remove();

    // get the results through AJAX
    $.ajax({
        type: "POST",
        url: "http://localhost/hr/index.php/listing/ajax_csv", 
        data: $("#listing_form").serialize(),
        timeout: 5000,
        success: function(data) {
            $(".tbl tbody").append(data);
        },
        error: function(objAJAXRequest, strError) {
           $(".tbl tbody").append("<tr><td>failed " + strError + "</td></tr>");
        }
    });

    }, 1000); // 1 second?    

    return true;

}
}());

Это подождет секунду, пока не будет сделан запрос AJAX. Что вы имеете в виду в отношении «как только истечет время ожидания, новый запрос больше не работает». Если вы хотите инициировать другой запрос в случае сбоя, просто позвоните update_list() еще раз (но учтите, что действует 1-секундная задержка).

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