как прервать ajax-запрос, созданный jquery?

Discussion in 'PHP' started by Дикс, 26 May 2009.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    возможно ли это?
     
  2. MuXaJIbI4

    MuXaJIbI4 Member

    Joined:
    20 Nov 2008
    Messages:
    66
    Likes Received:
    7
    Reputations:
    0
    а зачем такое может понадобиться?
     
  3. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Code:
    jQuery.ajaxSetup({
      beforeSend: function(xhr, settings)
      {
        return false;
      }
    });
    
     
    1 person likes this.
  4. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    мой скрипт таким образом реализует многопоточность
    хотелось бы иметь над ней какой-то контроль
     
  5. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    :eek:
    Можешь рассказать принцип? Интересно же
     
    #5 astrologer, 26 May 2009
    Last edited: 26 May 2009
  6. PaCo

    PaCo Elder - Старейшина

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    Естественно речь идет о ПСЕВДО много поточности, интерпретатор JS выполняет все операции атомарно, вот примерчик(там они громко это называют много поточностью, на самом деле это не так) - http://javascript.ru/blog/tenshi/mnogopotochnyi-yavaskript
     
  7. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16
    По моему если уже чтото отправлено, то это можно отвести в сторону только на стороне сервера.
    попробуй в случае отмены писать ему какой нибудь запрос типа
    (cancel,id);
    id - код нужного запроса.
    но это реально заморочно очень)
     
  8. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    О, вообще-то, всё гораздо интереснее.
    К сожалению, не могу найти сейчас обсуждение по теме - но ход мыслей был примерно такой:
    1. JS выполняется строго последовательно, без исключений
    2. Пришедший ответ с сервера (xhr) иногда может прерывать исполняющийся код. Функции никогда не прерываются.
    3. Функции иногда прерываются.
    4. Никогда не полагайтесь на то, что один кусок кода будет исполняться до или после другого.

    Что касается многопоточности - ближайший её аналог будет доступен в виде Web Workers.
    Сейчас опера и, похоже, только она даёт возможность реализовать многопоточность, запустив код во фрейме. (Судя по всему, исполняется действительно параллельно)

    KaZ@NoVa, написано "прервать" - значит, всё ещё в процессе и можно вполне вызвать метод abort

    Хотя, наверное, Дикс лучше знает, что он подразумевал
     
  9. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    как правильно сказали на другом ресурсе - не прервать запрос, а перестать ждать от него ответа.
    т.е. запустил я 50 одинаковых соединений. все они закончат выполняться хз когда и каждый из них может повлиять своим ответом на скрипт тогда, когда это уже не надо.

    в фф я открываю файрбаг и вижу там открытые xhr
    если нажать escape - они все останавливаются и помечаются как неоконченные.
    примерно этого мне хотелось бы добиться программно.

    я думал есть какой-то способ это сделать малой кровью.