jQuery. Не выполняйте запрос XHR!
-
11-10-2019 - |
Вопрос
Я только что вошел в мир jQuery и довольно новичок в JavaScript. У меня есть небольшой фрагмент JavaScript, как ниже:-
<script type="text/javascript">
$(function(){
$('a').click(function(event){
event.preventDefault();
$.get('/_add_navigation_',function(response){
$('#themaincontents').html(response);
})
})
</script>
HTML выглядит ниже:-
<a href="?toaddnavigation">CLICK Me</a>
<div id="themaincontents"></div>
На стороне сервера я делаю проверку заголовка XHR чем -то вроде
if request.is_xhr: send response else:redirect somewhere
Теперь, пока этот код отлично работает на Chrome и Opera, на Firefox он ведет себя немного странно. Сервер не отправляет обратно, скорее, перенаправляет. Это означает, что он говорит, что нет заголовка XHR. Почему это должно происходить, пока в двух других браузерах он работает нормально. (Я использую Firefox 3.6.12)----взглянул на заголовки запроса Firefox, и я не нахожу x-requested-with: xmlhttprequest, но он присутствует в Chrome)
Решение
Не все браузеры отправляют одни и те же заголовки, и вы не можете полагаться на них, чтобы они были последовательны в разных браузерах. Самый простой способ - не полагаться на браузер, чтобы что -то отправить, но вручную что -то отправить что -то самостоятельно:
$.get('url', {
xhr: 'yes' // add this extra parameter here
}, function(){
});
Затем проверьте, чтобы получить переменную на сервере вместо заголовка, который может быть отправлен или не может быть отправлен браузером.