Проходя через источник jQuery, похоже, что $.ajax()
(и, следовательно, $.get()
, $.post()
и т. Д.) Автоматически установит параметр crossDomain
на true
, если увидит, что вы делаете крест -домен запроса, которым вы являетесь ( соответствующий код здесь ). А в реальном AJAX-запросе jQuery не устанавливает заголовок HTTP_X_REQUESTED_WITH
, который нужен Django для is_ajax()
, если установлено crossDomain
( соответствующий код здесь ).
Я думаю, что самый простой способ исправить это - явно установить crossDomain
в false
:
function xhrconnect() {
$.ajax({
url: "http://localhost:8000/xhr_test",
success: function(data) {
document.getElementById('xhrmsg').innerHTML = (data);
},
crossDomain: false
});
}
Если это не сработает, вы можете попробовать использовать функцию предварительного фильтра AJAX , чтобы вручную установить заголовок HTTP_X_REQUESTED_WITH
в запросе.