【问题标题】:how to use JSON.parse如何使用 JSON.parse
【发布时间】:2016-06-02 23:37:10
【问题描述】:

我在 ajax 请求中有以下代码:

    403: function(jqXHR) {
                var error = jqXHR.responseText;
                console.log(error);
            }

当此错误发生时,我会在控制台中收到下一条消息:

HttpError: Wrong password<br> &nbsp; &nbsp;at 
c:\Users\...path...js:18:29<br> &nbsp; &nbsp;at 
c:\Users\...path...\async.js:52:16<br> &nbsp; &nbsp;at 
Immediate._onImmediate 
(c:\Users\...path...\node_modules\async\lib\async.js:1201:34)<br>
&nbsp; &nbsp;at processImmediate [as _immediateCallback] 
(timers.js:383:17)

当我尝试解析此错误并以这种方式获取 error.message 时:

var error = JSON.parse(jqXHR.responseText);
    console.log(error.message);

我在控制台中有以下消息:

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
.complete()
m.Callbacks/j()
m.Callbacks/k.fireWith()
x()
.send/b()

这是服务器端代码:

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;

如何向 console.log 显示 error.message?

【问题讨论】:

  • 根据您发布的内容,错误文本不是 JSON。它看起来像是打算用作 HTML 文本内容的文本。
  • 您作为console.log(jqXHR.responseText) 的输出显示的内容不是远程 JSON,因此JSON.parse 会阻塞它也就不足为奇了。

标签: javascript json ajax node.js express


【解决方案1】:

试试这个。 var 错误 = JSON.parse(jqXHR.responseJSON); console.log(error.message);

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 2020-06-12
    • 1970-01-01
    • 2020-09-12
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多