Django JQuery AJAX запрос 404 ошибка - PullRequest
0 голосов
/ 24 июня 2009

Я надеюсь, что кто-то может помочь мне здесь. Я не могу сделать успешный вызов ajax, используя django, jquery и плагин проверки формы jquery. Я пытаюсь передать электронный адрес формы в метод представления, чтобы увидеть, существует ли он в БД. Но ответ сервера 404 на запрос ajax. В Firebug я вижу, что отправляемый запрос выглядит правильно отформатированным.

отправленный запрос: http://127.0.0.1:8000/xEmailExists/?email=joeblow%40test.cc

URL-адрес имеет: (r '^ xEmailExists / (? P \ d +) $', 'hwa.website.views.root.xEmailExists'),

и мой файл представления hwa.website.views.root имеет следующую сигнатуру метода: def xEmailExists (запрос, электронная почта):

Я использую Django 1.1 Bet

Ответы [ 2 ]

0 голосов
/ 25 июня 2009

Как сказал Доминик, проблема в вашем urls.py, но я не уверен, что у него есть правильное решение.

Сначала исправьте urls.py следующим образом:

(r'^xEmailExists/$', 'hwa.website.views.root.xEmailExists'),

Затем в вашем представлении xEmailExists вы получите адрес электронной почты, используя request.GET:

def xEmailExists(request):
    email = request.GET.get('email', '')
    # check if email exists and return...

Это вытянет ?email=test@example.com из вашей строки запроса. Использование GET.get('email', '') возвращает значение по умолчанию (пустая строка), если 'email' отсутствует в строке запроса, но если вы уверены, что оно будет там, GET['email'] также будет работать.

0 голосов
/ 24 июня 2009

Это похоже на проблему с вашей конфигурацией URL. Вызывает ли 404 доступ к этому URL в интерактивном режиме (т. Е. Попробуйте перейти на него вручную)?

На самом деле нет ничего волшебного в URL для запросов Ajax, они по-прежнему просто URL-адреса - отлаживайте их так же, как любой URL-адрес в приложении Django.

Если я действительно не лишен сна r'^xEmailExists/(?P\d+)$' имеет несколько проблем:

  1. Вы используете именованный шаблон URL без имени - замените ?P на ?P<email>.
  2. Вы не хотите \d+ - это будет соответствовать 1 или более цифрам (то есть 0-9). Вы, вероятно, хотите сопоставить все символы для проверки электронной почты.
  3. Кроме того, какой смысл передавать электронную почту в виде строки запроса - почему бы просто не сделать http://127.0.0.1:8000/xEmailExists/joeblow%40test.cc?

Надеюсь, это поможет! Извиняюсь, если я испортил сопоставление с регулярным выражением - это одна из тех вещей, с которыми я склонен возиться, чтобы получить права, и я не проверял свой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...