Возвращение правильного ответа на почтовый запрос в Django - PullRequest
1 голос
/ 20 марта 2011
<form id="login_frm" method="post" action = "/login/user_auth/"> 
    <fieldset> 
    <legend>Login:</legend> 
        <label for="id_email">Email</label> 
        <input type="text" name="email" id="id_email" /> 

        <label for="id_password">Password</label> 
        <input type="password" name="password" id="id_password" /> 

    </fieldset> 
    <input name = "login" type="submit" value="Login" /> 
</form> 


$(document).ready(function () {
    $('#login_frm').submit(function() {
            var $form = $(this);
            $.post('/login/user_auth/' , form.serialize(), function(data) {
               // alert ("function");
        alert (data);
    });
    return false;
    });
});

Django View:

def login_user(request):
    if request.method == 'POST':
        # perform all logic / and db access
    data = "hello"
    return HttpResponse(data)
    # return HttpResponse ('success.html')

Я застрял на этом весь день.

  1. Когда я вернусь data как мой ответ, дляпо какой-то причине браузер отображает «Hello», загружая пустую веб-страницу с надписью «Hello»;в приведенной выше функции JavaScript alert (data); никогда не вызывается (я не могу понять, почему).

  2. Я не могу отобразить success.html.Я считаю, что если я напишу render_to_response внутри HttpResponse, я решу эту проблему.Тем не менее, я считаю, что создание пункта 1 является первоочередной задачей.

Цель

После публикации я хотел бы получить ответ отсервер (будь то просто «привет») или веб-страница, на которой отображается сообщение об успехе, сохраненное в «success.html»), и отображает его вместо login_frm, не обновляя браузером новую веб-страницу.

1 Ответ

0 голосов
/ 20 марта 2011

Интересно.form не определено (вы определили его как $ form), и изменение на $form устранило проблему.

$(document).ready(function () {
    $('#login_frm').submit(function() {
        var $form = $(this);
        $.post('/login/user_auth/' , $form.serialize(), function(data) {
           // alert ("function");
           alert (data);
       });
    return false;
    });
});

Возможно, вы захотите использовать что-то вроде event.preventDefault(), чтобы будущие ошибки не были скрыты оттебе нравится это$('form').submit(function(e){ e.preventDefault(); .....})

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