JQuery AJAX-запрос вызывается дважды при использовании Jquery, Django и Google App Engine. - PullRequest
5 голосов
/ 11 сентября 2010

Я использую Google App Engine, Jquery и Django.Я хочу, чтобы данные POST отправлялись на серверную часть при отправке формы, и я делаю это в JQuery со следующим кодом:

    $("#listform").submit(function() {
            $.ajax({
                    type: "POST",
                    url: "/xhrtest",
                    data: {'name': 'herman'},
                    success: function(data){
                            console.log(data)
                    }
            });
    })

В моем представлении Django:

def xhrtest(request):
        if request.method == "POST":
                return HttpResponse("Post data!")
        else:
                return HttpResponse("GET request.")

Я бы ожидал получить ответ «Опубликовать данные!», Но почему-то ответ всегда был «ПОЛУЧИТЬ запрос».Это не проблема юникода, так как можно напечатать request.method и посмотреть «GET».

При оценке этого в Firebug я вижу два проходящих запроса: первый запрос POST, который получает ответ «запрос GET».а затем запрос GET, который получает ответ «Получить запрос».также.В консоли разработки Google App Engine я также вижу, как проходят два запроса.Запрос POST выполняется с ответом 301, а GET - с 200.

Что это значит и что мне нужно сделать, чтобы получить данные POST?

1 Ответ

11 голосов
/ 11 сентября 2010

Проблема почти наверняка в том, что вы запрашиваете URL /xhrtest, без последней косой черты.По умолчанию Django перенаправляет этот запрос на /xhrtest/ - с окончательной косой чертой - и это перенаправление будет GET, а не POST.

Для получения дополнительной информации см. APPEND_SLASH параметр, который настраивает это поведение, и CommonMiddleware модуль, который его использует.

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