2013-07-30 2 views
3

У меня есть следующий сценарийБудет ли браузер сделать AJAX, если window.location немедленно изменил

<script> 
    jQuery.ajax{ 
     url : 'some serverside bookkeeping handler', 
     type : post, 
     data : ajaxData 
    }; 

    window.location = 'Some new URL'; 
</script> 

Use Case: Я хочу сделать бухгалтерию сколько раз конкретная ссылка на веб-странице щелчок. Обратите внимание, что целевая страница не принадлежит мне. Я думал сделать вызов ajax и одновременно переходить на новый URL.

В основном я задаюсь вопросом, не сделает ли какой-либо браузер даже вызов ajax и перешел на новый URL-адрес. Мое предположение заключается в том, что браузер все еще может обрабатывать объект запроса ajax и переходить на новый URL-адрес, чтобы браузер не запускал запрос ajax.

Могут ли быть такие случаи?

Обратите внимание, что я не беспокоюсь, если ошибка ajax ошибочна.

ответ

1

похоже не возможно. Линия window.location, выполненная до возвращения ответа ajax. Когда изменяется window.location, все запросы ajax из предыдущего домена отменены. Попробуйте эту скрипку: http://jsfiddle.net/Vfk3S/8/ и посмотрите вкладку «Сеть» в devtool.

+0

Спасибо lxgreen, вызов ajax отменен, но означает ли это, что браузер даже не сделал запрос? Я действительно смотрю, существует ли случай, когда браузер даже не смог сделать запрос. – Sashwat

+0

Самый лучший и самый надежный способ проверить это - уловить запросы на стороне сервера. – lxgreen

2

Чтобы быть в порядке сохранения, переведите перенаправление в успешный обработчик вызова ajax!

jQuery.ajax{ 
    url : 'some serverside bookkeeping handler', 
    type : post, 
    data : ajaxData 
    success: function(){ window.location = 'Some new URL'; } 
}; 

или использовать <a href="some url" target="_blank" ></a>, чтобы открыть новую вкладку в браузере, если вы можете.

+0

Спасибо, Джон. Но это добавит дополнительную задержку на стороне клиента, которую мы не можем себе позволить. – Sashwat

+0

Возможно, попробуйте websockets –

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