Contesto: un'estensione per browser Chrome utilizza JQuery per richiedere una risposta da un'app django remota. Django riconosce che la richiesta viene effettuata tramite AJAX e risponde con "Ciao AJAX!". Sto basando il mio esercizio this great example. Poiché questa richiesta viene eseguita da un'estensione di Chrome, la richiesta viene eseguita su più siti, quindi ho utilizzato il decoratore @CSRF_exempt
nella mia vista Django.Django dice is_ajax è falso su una richiesta JQuery AJAX
Problema: vista mio Django non riconosce la richiesta come una richiesta AJAX, e invece di rispondere Hello AJAX!
risponde Hello not AJAX!
. vista
mio Django:
(l'URL /xhr_test
utilizza la seguente vista)
@csrf_exempt
def check_login_extension(request):
if request.is_ajax():
message = "Hello AJAX!"
else:
message = "Hello not AJAX"
return HttpResponse(message)
La mia richiesta JQuery:
function xhrconnect() {
$.get("http://localhost:8000/xhr_test", function(data) {
document.getElementById('xhrmsg').innerHTML = (data);
});
}
Provare ad aggiungere una barra finale all'URL - 'http: // localhost: 8000/xhr_test /'. –
Appena provato, ma nessun effetto. C'è qualcosa nel modo in cui JQuery invia richieste AJAX che richiedono una barra finale? So che '/ xhr_test' si sta risolvendo correttamente con la vista corretta, perché la vista sta rispondendo con il messaggio' Hello not AJAX'. Se JQuery non riuscisse a trovare l'URL corretto, non ci sarebbe alcun messaggio. – jchung