Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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 如何通过ajax显示表单错误?_Javascript_Jquery_Html_Ajax_Node.js - Fatal编程技术网

Javascript 如何通过ajax显示表单错误?

Javascript 如何通过ajax显示表单错误?,javascript,jquery,html,ajax,node.js,Javascript,Jquery,Html,Ajax,Node.js,我试图通过ajax将从服务器验证器获得的消息显示到登录弹出窗口中,但我无法获得错误消息,我认为问题出在ajax代码中。以下是我的ajax的一部分: case 403: form.find('.error-form').show(300); var error = JSON.parse(jqXHR.responseText); $('.er

我试图通过ajax将从服务器验证器获得的消息显示到登录弹出窗口中,但我无法获得错误消息,我认为问题出在ajax代码中。以下是我的ajax的一部分:

                    case 403:
                    form.find('.error-form').show(300);
                    var error = JSON.parse(jqXHR.responseText);
                    $('.error', form).html(error.message);

                    $(":submit", form).button("reset");
                    break;
我认为问题在于:

$('.error', form).html(error.message);
因为按钮不会返回默认状态,而且如果我输入以下代码,它会在弹出窗口中显示一个完整的错误

document.getElementById("alert alert-danger").innerHTML = jqXHR.responseText;
我是编程新手,我做错了什么

这里还有我的弹出式html:

<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" id="login">
<div class="modal-dialog modal-sm">
    <div class="modal-content">

        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">x</span></button>
            <h3 class="modal-title" id="mySmallModalLabel">LOGIN</h3>
        </div>
        <div class="modal-body">
            <form id="loginForm" name="loginForm">
                <div class="form-group">
                <!--<div class="form-group field-error">-->
                    <label for="username">Username</label>
                    <span class="error-message">Field can't be blank</span>
                    <input name="username" type="text" class="form-control" id="log-name" placeholder="Username">


                </div>
                <div class="form-group">
                    <label for="password">Password</label>
                    <span class="error-message">Field can't be blank</span>
                    <input name="password" type="password" class="form-control" id="input-password"
                           placeholder="Password">

                    <div class="error-form">
                        <div id="alert alert-danger" class="alert alert-danger"></div>
                    </div>


                </div>
                <div class="form-group">
                    <button type="submit" class="btn btn-primary block">Login</button>
                </div>
                <div class="form-group">
                    <a href="#" class="btn btn-line block" data-toggle="modal" data-target="#createacc" data-dismiss="modal" aria-label="Close">Create account</a>
                </div>
            </form>
        </div>
    </div>
</div>
以下是服务器端代码:

    var crypto = require('crypto');
    var async = require('async');
    var util = require('util');


    var mongoose = require('lib/mongoose'),
        Schema = mongoose.Schema;

    var schema = new Schema({
        username: {
            type: String,
            unique: true,
            required: true
        },
        hashedPassword: {
            type: String,
            required: true
        },
        salt: {
            type: String,
            required: true
        },
        created: {
            type: Date,
            default: Date.now
        }
    });




    schema.methods.encryptPassword = function(password) {
        return crypto.createHmac('sha1', this.salt).update(password).digest('hex');
    };


    schema.virtual('password')
        .set(function(password) {
            this._plainPassword = password;
            this.salt = Math.random() + '';
            this.hashedPassword = this.encryptPassword(password);
        })
        .get(function() { return this._plainPassword; });




    schema.methods.checkPassword = function(password) {
        return this.encryptPassword(password) === this.hashedPassword;
    };

    schema.statics.authorize = function(username, password, callback) {
        var User = this;

        async.waterfall([
            function(callback) {
                User.findOne({username: username}, callback);
            },
            function(user, callback) {
                if (user) {
                    if (user.checkPassword(password)) {
                        callback(null, user);
                    } else {
                        callback(new AuthError("Wrong password"));
                    }
                } else {
                    var user = new User({username: username, password: password});
                    user.save(function(err) {
                        if (err) return callback(err);
                        callback(null, user);
                    });
                }
            }
        ], callback);
    };


    exports.User = mongoose.model('User', schema);




    function AuthError(message) {
        Error.captureStackTrace(this, AuthError);

        this.message = message;
    }

    util.inherits(AuthError, Error);

    AuthError.prototype.name = 'AuthError';

    exports.AuthError = AuthError;

也许你们并没有错误…我故意为现有用户插入了不正确的密码,所以我在控制台中有一个403错误。我可以使用document.getElementById(“alert-alert-danger”).innerHTML=jqXHR.status在弹出窗口中显示错误状态;但这并不是用户无法接受的。我需要显示error.message someone您是如何尝试将jquery与nodejs一起使用的?是的,除了这一点,它工作得很好您的服务器端代码是什么?
    var crypto = require('crypto');
    var async = require('async');
    var util = require('util');


    var mongoose = require('lib/mongoose'),
        Schema = mongoose.Schema;

    var schema = new Schema({
        username: {
            type: String,
            unique: true,
            required: true
        },
        hashedPassword: {
            type: String,
            required: true
        },
        salt: {
            type: String,
            required: true
        },
        created: {
            type: Date,
            default: Date.now
        }
    });




    schema.methods.encryptPassword = function(password) {
        return crypto.createHmac('sha1', this.salt).update(password).digest('hex');
    };


    schema.virtual('password')
        .set(function(password) {
            this._plainPassword = password;
            this.salt = Math.random() + '';
            this.hashedPassword = this.encryptPassword(password);
        })
        .get(function() { return this._plainPassword; });




    schema.methods.checkPassword = function(password) {
        return this.encryptPassword(password) === this.hashedPassword;
    };

    schema.statics.authorize = function(username, password, callback) {
        var User = this;

        async.waterfall([
            function(callback) {
                User.findOne({username: username}, callback);
            },
            function(user, callback) {
                if (user) {
                    if (user.checkPassword(password)) {
                        callback(null, user);
                    } else {
                        callback(new AuthError("Wrong password"));
                    }
                } else {
                    var user = new User({username: username, password: password});
                    user.save(function(err) {
                        if (err) return callback(err);
                        callback(null, user);
                    });
                }
            }
        ], callback);
    };


    exports.User = mongoose.model('User', schema);




    function AuthError(message) {
        Error.captureStackTrace(this, AuthError);

        this.message = message;
    }

    util.inherits(AuthError, Error);

    AuthError.prototype.name = 'AuthError';

    exports.AuthError = AuthError;