【发布时间】:2016-06-02 23:37:10
【问题描述】:
我在 ajax 请求中有以下代码:
403: function(jqXHR) {
var error = jqXHR.responseText;
console.log(error);
}
当此错误发生时,我会在控制台中收到下一条消息:
HttpError: Wrong password<br> at
c:\Users\...path...js:18:29<br> at
c:\Users\...path...\async.js:52:16<br> at
Immediate._onImmediate
(c:\Users\...path...\node_modules\async\lib\async.js:1201:34)<br>
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