Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试使用Fancybox/Ajax处理登录错误_Javascript_Python_Ajax_Django_Fancybox 2 - Fatal编程技术网

Javascript 尝试使用Fancybox/Ajax处理登录错误

Javascript 尝试使用Fancybox/Ajax处理登录错误,javascript,python,ajax,django,fancybox-2,Javascript,Python,Ajax,Django,Fancybox 2,我正在构建我的第一个网页(Django 1.5、Python2.7、Fancybox 2),所以我不确定我的错误在哪里,因为我一下子就学到了很多东西 我希望我的用户能够通过弹出的Fancybox模式登录或注册。我已经把这些都做好了,但我需要处理错误(例如,用户留下一个空白字段)。我想用一条错误消息重新渲染模式,但我不确定如何构造它。以下是我目前掌握的情况: 视图.py def base(request): if request.method == "GET": retur

我正在构建我的第一个网页(Django 1.5、Python2.7、Fancybox 2),所以我不确定我的错误在哪里,因为我一下子就学到了很多东西

我希望我的用户能够通过弹出的Fancybox模式登录或注册。我已经把这些都做好了,但我需要处理错误(例如,用户留下一个空白字段)。我想用一条错误消息重新渲染模式,但我不确定如何构造它。以下是我目前掌握的情况:

视图.py

def base(request):
    if request.method == "GET":
        return render_to_response("base.html", {}, RequestContext(request))
    else:
        response_dict = {'error' : None}
        if "login" in request.POST:
            email = request.POST.get('email', False)
            password = request.POST.get('password', False)
            if email and password:
                user = authenticate(username=email, password=password)
                response_dict.update({'email':email, 'password':password})
                if user:
                    name = "{0} {1}.".format(user.first_name, user.last_name[0])
                    print name
                else:
                    response_dict['error'] = "No user found with that email/password."
            else:
                response_dict['error'] = "Please fill out all fields."
            if response_dict['error']: //seems like something is missing here?
                render_to_response("base.html", {'error_message':response_dict['error']}, RequestContext(request))
base.js

$("#login_fancy").fancybox({
    'scrolling' : true,
    helpers : {
        title : null
    }

});

    $("#login_form").bind("submit", function(){ //this is all clearly wrong, as it never gets called--I can comment out the whole thing with no change
        console.log("login submitted");
        $.fancybox.showActivity();

        $.ajax({
            type: "POST",
            cache: false,
            url: "/login/",
            data: $(this).serializeArray(),
            success: function(data){
                $.fancybox(data);
            } 


        });
        return false;

    });
html

    <div id="login">
        <a id="login_fancy" title="Login" href="#login_form">Login</a> or <a id="newuser_fancy" title="Newuser" href="#newuser_form">Register</a>
    </div>
<div style="display:none">
    {% if form.errors %}
        <p class="error">{{ error_message }}
    {% endif %}

    <form id="login_form" action=""  method="POST">
      {% csrf_token %}

        <label for="email">Email:</label>
        <input type="text" name="email" value="" id="email">
        <label for="password">Password:</label>
        <input type="password" name="password" value="" id="password">
        <input type="submit" name="login" value="Log In" />
    </form>
</div>

或
{%if form.errors%}

{{error\u message} {%endif%} {%csrf_令牌%} 电邮: 密码:


您的JS需要包含在
文档中。准备好处理程序

您的提交处理程序从未注册,因为此时页面上不存在表单

您应该在
上使用
$。或使用
文档.ready
处理程序



然后,在ajas处理程序中,您可以添加逻辑以在表单中显示验证错误。

页面中的脚本包括在哪里?base.js作为html头部的最后一项。为了清楚起见,我能够登录并注册新用户;我只是不知道如何在fancybox中添加一条错误消息。对于如何使用ajax(如果这是最好的方法),我仍然有些困惑。我正在使用django的用户身份验证库——我能通过ajax使用它吗?@Thumbtack当然,这是我的错:我如何通过ajax使用它?