Вызов AJAX не работает с Django. Нет ответа или сообщение об ошибке

Вот мой код:

$(document).ready(function(){   
$.post("register/email", { email:"myemail" }, function(data,status){
        alert(data);
    });
});

и мой файл views.py

from django.http import HttpResponse, Http404
from django.shortcuts import render

def registerEmail(request):
        if request.is_ajax():
            email = request.POST['email'];
            return HttpResponse(email)
        else:
            return HttpResponse('Game')

и мой urls.py

urlpatterns = [
    path('', homePageView, name='home'),
    path('register/email/', registerEmail, name='verifyEmail'),
]

Я не получаю предупреждающего сообщения при выполнении страницы. Кроме того, нет сообщения об ошибке в ajax или django. Итак, я попытался добавить alert('hello') вне функции получения ajax, внутри $(document).ready, и я получил приветственное сообщение, как и ожидалось. Итак, мои файлы js правильно связаны в django. мои файлы js находятся в myproject/currentapp/static/currentapp/js. Я новичок в django, поэтому, пожалуйста, предложите мне добавить дополнительную информацию, прежде чем запрашивать решение.

Если вы не увидели alert(), значит, на стороне сервера произошла ошибка. Я бы предложил сделать запрос и проверить вкладку «сеть» консоли, чтобы увидеть, каков точный код состояния и текст ответа. Это должно дать вам представление о том, какая именно часть вашего кода Python нуждается в отладке.

Rory McCrossan 06.03.2019 17:08

Есть одна очевидная ошибка: вы отправляете GET, но в представлении пытаетесь получить доступ к ключу request.POST, который будет пуст.

Daniel Roseman 06.03.2019 17:11

@ShafikurRahman пробовал. До сих пор нет ответа.

Sphinx 06.03.2019 17:13

@RoryMcCrossan я проверил вкладку сети. Нет запроса на страницу /register/email.

Sphinx 06.03.2019 17:14

@DanielRoseman о, извините, я забыл отредактировать views.py после того, как изменил свой код из поста, чтобы проверить, что не так.

Sphinx 06.03.2019 17:16

В этом случае ваш вызов AJAX не выполняется. Вы не показали, при каком событии оно должно быть, но это то, что вам сейчас нужно отладить

Rory McCrossan 06.03.2019 17:17

@RoryMcCrossan отредактировал мой вопрос

Sphinx 06.03.2019 17:20

Вы уверены, что запрос не сделан? Вы делаете это, когда страница загружается, поэтому единственный способ, которым она не появится, - это если jQuery не будет загружен, но в этом случае будет очень очевидная ошибка консоли.

Rory McCrossan 06.03.2019 17:22

@RoryMcCrossan Я не знаю, сделано ли это, я новичок. Но jquery загружен, я проверил его, поместив предупреждение («привет») перед вызовом функции ajax, и он работал, как и ожидалось. Кроме того, я проверил вкладку сети, и она показывает внутреннюю ошибку сервера Error 505 для этого URL-адреса 127.0.0.1:8000/регистрация/электронная почта.

Sphinx 06.03.2019 17:26

Это то, что я упомянул в первом комментарии. Ваш звонок выполняется и приводит к ошибке 505 на сервере. Это означает, что в вашем коде Python есть ошибка, и JS в порядке. Вам нужно отладить Python, чтобы увидеть, в чем проблема. Обратите внимание, что ошибка 505 возникает очень редко, это означает, что вы используете неправильную версию HTTP для запроса: httpstatuses.com/505. Дважды проверьте, чтобы убедиться, что это правильный код ошибки.

Rory McCrossan 06.03.2019 17:27

@RoryMcCrossan я попытался добавить косую черту в конце URL-адреса в запросе ajax. Теперь он больше не показывает внутреннюю ошибку сервера, но говорит, что проверка CSRF не удалась. Запрос прерван.

Sphinx 06.03.2019 17:29

Эта ошибка говорит сама за себя.

Rory McCrossan 06.03.2019 17:29
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
12
113
0

Другие вопросы по теме