我很困惑。我从浏览器接收POST数据,解析它并将其插入mysql。除了在插入数据后对客户端的响应之外,一切都很完美。响应对象是可见的,它有方法'write',它只是拒绝工作。
我的代码在下面,提前谢谢。
var formidable = require("formidable");
var form = new formidable.IncomingForm();
form.parse(request, function (error, fields, files) {
if ( 'create' in fields ) {
args.name = fields.create;
if ( args.name == '' ) {
response.writeHead( 500, {"Content-Type": 'text/html' } );
response.end("this will work");
};
db.myFunction(args, function (id) {
console.log(id); // shows correct data returned from function
response.writeHead( 200, {"Content-Type": "text/html" } );
console.log(response.headersSent); // true
response.write(id); // but this will not work
response.end();
console.log('done'); // at this point node is still silent
});
} else {
response.writeHead( 500, {"Content-Type": 'text/html' } );
response.end("no create in fields"); // works fine
};
});
答案 0 :(得分:3)
id
的数据可能不是字符串或缓冲区。
试试这个:response.write('' + id);
答案 1 :(得分:0)
我希望这是一个评论,但首先尝试
response.write("some random string without the writeHead...")
如果有效,请尝试:
response.write(id.**toString()**)
仍然没有response.writeHead,如果有效,请尝试:
response.write(id.toString())
您也可以尝试JSON.stringify(id)
但这些只是奇怪的解决方案......我真的希望看到您拥有的所有代码,例如您的
var express = require("express");
var ejs = require("ejs");
var app = express();
app.set("view_engine", "ejs"); //or some other view engine like mustache
或至少: var http = require(' http'), var util = require(' util');
我不熟悉那个特定的NPM(强大的),但通过快速查看其文档,我似乎没有注意到包括响应之类的内容,以及如何定义响应?对不起,如果这不能引导您得到正确的答案,而是按照我认为的潜在问题进行处理。 您还可以尝试其他评论者所说的尝试解决非字符串问题的问题。
也是回应后的任何事情。我相信不会被人看到。尝试使用console.log(之前)...也可以使用response.end(id---if id was a string)
而不是response.write("this string");
,然后response.end();
响应结束可以包含响应写入。