За последние 24 часа нас посетили 20290 программистов и 1706 роботов. Сейчас ищут 1573 программиста ...

Остановить Ajax запрос в JQuery.

Тема в разделе "JavaScript и AJAX", создана пользователем Phantik, 21 фев 2010.

  1. Phantik

    Phantik Активный пользователь

    С нами с:
    2 июл 2009
    Сообщения:
    163
    Симпатии:
    0
    При работе с объектом XMLHttpRequest я могу установить некий интервал времени, по завершению которого, если ответ с сервера не был получен, то я могу отменить запрос Obj.abort();
    Как сделать аналогичное(сбросить запрос) в JQuery?
    Заранее спасибо.
     
  2. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    можно поискать в гугле.
    [js]var xhr = $.ajax({/* options */})

    // ...
    xhr.abort();[/js]
     
  3. Phantik

    Phantik Активный пользователь

    С нами с:
    2 июл 2009
    Сообщения:
    163
    Симпатии:
    0
    [js]
    function AjaxError()
    {
    $.ajax().abort();
    alert($.ajax().readyState);
    }
    function AjaxDone(res)
    {
    alert(res);
    }
    function OnButtonClick()
    {
    $.post('/aaa.php',{a:"1"},AjaxDone);
    setTimeout("AjaxError()",5000);
    }

    [/js]

    aaa.php
    PHP:
    1.  
    2. <?php
    3. sleep(10);
    4. echo "Server done";
    5. ?>
    6.  
    Выполняется функция AjaxError, alert выводит 1. Но после этого выполняется и AjaxDone. Почему запрос не прерывается? Как это можно исправить?
     
  4. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    я думаю, что не стоит делать $.ajax(). Помести резалт $.post в переменную, которая будет доступна из AjaxError
     
  5. Phantik

    Phantik Активный пользователь

    С нами с:
    2 июл 2009
    Сообщения:
    163
    Симпатии:
    0
    Спасибо, очень помог разобраться.