Отслеживание запроса Ajax - PullRequest
1 голос
/ 07 августа 2010

Новичок здесь ..

Я просто хочу спросить, как я могу выполнить свою домашнюю работу в школе.Я в основном имею эту потребность.

Я хочу отправлять запрос ajax каждые 10 секунд, но я не хочу инициировать другой запрос, если мой предыдущий запрос еще не вернулся.

Я думаю, чтоиногда соединение с БД может быть настолько плохим, что я хотел бы дождаться завершения моего предыдущего запроса (успех / сбой / ошибка), прежде чем запустить другой.

Я проверяю JavaScript и обнаружил метод setinterval,Но как я могу выстроить свой запрос ajax, чтобы сервер не запускался многими запросами ajax?

Я сейчас изучаю jquery и использую JSON.

Ответы [ 3 ]

4 голосов
/ 07 августа 2010

Один из методов - установить для переменной значение false при отправке запроса.Когда вы получите его обратно, установите его обратно в true.Когда вы отправите новый ajax-запрос, убедитесь, что значение равно true.Если нет, добавьте его в какую-либо очередь, чтобы он вызывался по завершении запроса.Однако, если каждый запрос занимает больше времени, чем десять секунд, ваша очередь будет довольно резервной.Таким образом, вы можете не хотеть очереди.Поэтому вместо того, чтобы отправлять запрос ajax, если переменная имеет значение false, просто подождите еще десять секунд.

1 голос
/ 08 августа 2010

Я даже помогу больше:

    var isWatingForResponse = false;

    $.ajax({
        url: 'wherever'
        ,dataType: 'json'
        ,beforeSend: function() {
            if(isWatingForResponse) {
                return false;
            }
            isWatingForResponse = true;
        }
        ,complete: function() {
            isWatingForResponse = false;
        }
        ,success: function (data) {
            //process data
        }
    });

Или следуйте за ответом @ qw3n. Это должно работать с jQuery 1.4.2

0 голосов
/ 08 августа 2010

Как я вижу ОП вопрос:

Как настроить отказоустойчивость на стороне клиента из-за проблем с Db-сервером, используя jQuery Ajax?

Это ИМХО, действительно хороший вопрос. Если можно, я бы хотел наметить трубу:

web-client->network->web-server->network->Db-server

Db-server->network->web-server->network->web-client

Ваше решение этой проблемы обработки проблем с db-server в клиенте является работоспособным, но на самом деле не решает реальную проблему. Это действительно может нанести вам вред в будущем расширении вашего клиента.

Вы действительно должны решать эту проблему как можно ближе к проблеме. На веб-сервере.

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