response.write不起作用node.js

时间:2015-04-11 13:48:41

标签: node.js

我很困惑。我从浏览器接收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
    };
});

2 个答案:

答案 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();响应结束可以包含响应写入。