Как отменить запрос ajax, который работал (на стороне сервера)

Итак, приведенный выше код переписан для использования итераторов вместо диапазона, основанного на цикле. Боюсь, я до сих пор не понимаю, какие изменения вы хотите сделать.

for (auto it = cuvinte.begin(); it != cuvinte.end(); ++it)
{
    int nr = 1;
    incercare.clear();
    incercare.push_back(*it);
    for (auto i2 = cuvinte.begin(); i2 != cuvinte.end(); ++i2)
    {
        if (incercare.back()[incercare.back().size()-1] == (*i2)[0])
        {
            ++nr;
            incercare.push_back(*i2);
        }
        if (nr > maxim)
        {
            maxim = nr;
            solutie = incercare;
        }
    }
}
13
задан AndreLiem 28 April 2009 в 20:39
поделиться

5 ответов

№ Определенно нет простого способа.

Я могу придумать несколько сложных способов, но они будут ненадежными.

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

7
ответ дан 2 December 2019 в 00:58
поделиться

Самый простой способ - просто отправить заголовок HTTP-ответа 503 (или аналогичный) и прервать приложение на стороне сервера (или просто прервать приложение). Предполагая, что данные не были отправлены, и / или вы проверили клиентскую часть заголовка ответа HTTP, вы можете просто обработать его как неудачный запрос.

0
ответ дан 2 December 2019 в 00:58
поделиться

The short answer is "no". Unless you're talking about a very long running backgrounded process on the server side, in which case you could have a second Ajax request initiate a stop on it. But if you're talking about a regular request to an Apache/PHP server, then no... identifying which Apache thread your request was running in would be trouble enough.

It would be much easier to verify your Ajax request somehow before even starting the process; make sure it's what you want to be running. You could have a Javascript confirmation process as well if you need the user to be aware that what they are doing cannot be interrupted.

As Steven posted, having a reversal process sounds like it might be in your best interest as well.

0
ответ дан 2 December 2019 в 00:58
поделиться

Инициируйте другой Ajax запрос. Я нашел этот поток, пытаясь выяснить, как предотвратить прерывание предыдущего запроса при вызове другого.

4
ответ дан 2 December 2019 в 00:58
поделиться

Нет никаких хороших способов остановить просьбу само по сети (как многие говорили), но относительно легко остановить эффекты запроса. IE

на стороне сервера: вы могли бы выбрать (или любой, что требуется убить скрипт), постоянно проверяя глобальные переменные (выступающие в качестве флагов), такие как cookies или сеансы (опять же, предполагая Это изменится во время выполнения скрипта). Кроме того, вы можете сохранить записи файлов или базы данных в качестве флагов (которые вы можете опросить для существования).

На стороне клиента: вы можете позвонить Abort (который не работает во всех браузерах, как другие, как другие сказали), или вы могли бы сохранить глобальный семафор / флаг в верхней части вашего обратного вызова (Это проверяет глобальное значение, чтобы увидеть, если он все еще должен выполнять или нет). Пример:

 window.ajaxIsStillGood = true;

 xhr.onreadystatechange = function( )
 {
     if( 4 === xhr.readyState && 200 === xhr.status )
     {
         if( true === window.ajaxIsStillGood ){ /* still good */ }
     }
 }

 /* bad stuff happens */

 window.ajaxIsStillGood = false; // now the code won't execute
1
ответ дан 2 December 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: