如何在Node.js中从ajax post返回成功

我有这样的function:

exports.saveAction = function (req, res) { var conn = mysql.createConnection({ host : nconf.get("database:host"), //port: 3306, user : nconf.get("database:username"), password : nconf.get("database:password"), database : nconf.get("database:database"), multipleStatements: true, //ssl: 'Amazon RDS' }); var action = req.body; conn.query('UPDATE actions SET ? WHERE Id = ?', [action, action.Id], function (err, result) { conn.end(); if (err) throw err; res.writeHead(200, { "Content-Type": "application/json" }); res.end("Updated Successfully"); }); }; 

我返回“200”,但它总是返回在下面显示的错误条款:

 $.ajax({ url: "/api/action/SaveAction", type: "PUT", data: ko.toJSON(self.stripDownObj()), datatype: "json", contentType: "application/json; charset=utf-8", success: function (result) { console.log(result); if(result.status == 200){ self.isEditMode(!self.isEditMode()); } }, error: function(result){ console.log(result); } }); 

注意:sql查询成功并保存数据。

当您期待JSON时,通过返回JSON

 res.end('{"success" : "Updated Successfully", "status" : 200}'); 

接着

 $.ajax({ .... datatype: "json", // expecting JSON to be returned success: function (result) { console.log(result); if(result.status == 200){ self.isEditMode(!self.isEditMode()); } }, error: function(result){ console.log(result); } }); 

在Node中,您始终可以使用JSON.stringify来获取有效的JSON

 var response = { status : 200, success : 'Updated Successfully' } res.end(JSON.stringify(response)); 

Express也支持做

 res.json({success : "Updated Successfully", status : 200}); 

它会将对象转换为JSON并自动传递适当的标题。