2016-03-03 5 views
2

Я хочу сделать AJAX запрос, чтобы отправить информацию и сразу же после отправки (не имеет значение, если я получаю сообщение об ошибке/успех) сделать перенаправление (без ожидания ответа сервера)отправить запрос Ajax, не дожидаясь ответа

I было интересно, если я сделаю что-то вроде

$.ajax({ 
url:_myurl_, 
timeout:500, 
success:function(){document.location= _redirectUrl_}, 
error: function(){document.location= _redirectUrl_} 
}) 

будет работать нормально? Может ли добавление тайм-аута не отменить мой запрос?

+0

Я думаю, что если вы не хотите ждать успеха или ошибки, вы можете использовать метод «beforeSend» ajax. см. документацию [здесь] (http://api.jquery.com/jquery.ajax/) –

+0

Если вам не нужен ваш запрос как завершенный или нет, тогда вы можете использовать это, но это действительно странное поведение ищет ... –

+0

@Fender Я не уверен, как это будет обрабатываться. Выполнение перенаправления должно прерывать запрос (клиентская сторона), поэтому, как это было бы обработано до его отправки, это может привести к неожиданному поведению. Я бы сказал, что просто запрос не будет отправлен вообще –

ответ

-1

AJAX по определению является асинхронным. Просто добавьте код перенаправления адресов ПОСЛЕ блока ajax, а не Inside AJAX.

function dummyAjax(){ 
    $.ajax({ 
     //do something 
     success:function(res){ 
      console.log(res);//chrome try preserve log you'll see this response even after redirection 
     } 
    }); 
    window.location.replace('https://google.com');//this would fire without waiting for ajax response 
} 
+0

Уверен, что мой запрос будет отправлен? Так как у меня нет доступа к серверной стороне, я не знаю, был ли получен мой запрос: S – Frankusky

+0

Ну, если вы не дожидаетесь ответа, вы никогда не будете уверены в качестве клиента. Но да $ .ajax будет запущен и выполнен! Это уж точно. :) – Anubhab

+0

Хорошо, я буду доверять u! Спасибо @anubhab :) – Frankusky

Смежные вопросы