Вот мой код:
$(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, поэтому, пожалуйста, предложите мне добавить дополнительную информацию, прежде чем запрашивать решение.
Есть одна очевидная ошибка: вы отправляете GET, но в представлении пытаетесь получить доступ к ключу request.POST, который будет пуст.
@ShafikurRahman пробовал. До сих пор нет ответа.
@RoryMcCrossan я проверил вкладку сети. Нет запроса на страницу /register/email.
@DanielRoseman о, извините, я забыл отредактировать views.py после того, как изменил свой код из поста, чтобы проверить, что не так.
В этом случае ваш вызов AJAX не выполняется. Вы не показали, при каком событии оно должно быть, но это то, что вам сейчас нужно отладить
@RoryMcCrossan отредактировал мой вопрос
Вы уверены, что запрос не сделан? Вы делаете это, когда страница загружается, поэтому единственный способ, которым она не появится, - это если jQuery не будет загружен, но в этом случае будет очень очевидная ошибка консоли.
@RoryMcCrossan Я не знаю, сделано ли это, я новичок. Но jquery загружен, я проверил его, поместив предупреждение («привет») перед вызовом функции ajax, и он работал, как и ожидалось. Кроме того, я проверил вкладку сети, и она показывает внутреннюю ошибку сервера Error 505 для этого URL-адреса 127.0.0.1:8000/регистрация/электронная почта.
Это то, что я упомянул в первом комментарии. Ваш звонок выполняется и приводит к ошибке 505 на сервере. Это означает, что в вашем коде Python есть ошибка, и JS в порядке. Вам нужно отладить Python, чтобы увидеть, в чем проблема. Обратите внимание, что ошибка 505 возникает очень редко, это означает, что вы используете неправильную версию HTTP для запроса: httpstatuses.com/505. Дважды проверьте, чтобы убедиться, что это правильный код ошибки.
@RoryMcCrossan я попытался добавить косую черту в конце URL-адреса в запросе ajax. Теперь он больше не показывает внутреннюю ошибку сервера, но говорит, что проверка CSRF не удалась. Запрос прерван.
Эта ошибка говорит сама за себя.

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