2013-03-11 92 views
0

我在node.js中有一个问题,通过JSON函数从post发布post变量。
编辑:我可以在Chrome的检查器中看到表单文章。表单帖子很好,格式良好。

服务器位:问题node.js POST变量从JSON发布

app.use(express.bodyParser()); 
app.post('/user', function (req, res) { 
    var tempSession = req.body.tempSession; 
    console.log(tempSession); 
} 

从JSON功能后:

function postJSONP(url, params, method) { 
    method = method || "post"; // Set method to post by default, if not specified. 

    var form = document.createElement("form"); 
    form.setAttribute("method", method); 
    form.setAttribute("action", url); 

    for(var key in params) { 
     if(params.hasOwnProperty(key)) { 
      var hiddenField = document.createElement("input"); 
      hiddenField.setAttribute("type", "hidden"); 
      hiddenField.setAttribute("name", key); 
      hiddenField.setAttribute("value", params[key]); 

      form.appendChild(hiddenField); 
     } 
    } 

    document.body.appendChild(form); 
    form.submit();   
} 

调用的JSON功能后:

function LoginSubmit() { 
    var action = 'login'; 
    var username = document.getElementById('username').value; 
    var password = document.getElementById('password').value; 
    var tempSession = generateSession(); 

    postJSONP('/user?callback=none&action=' + action + '&user=' + username,{"password":password, tempSession:tempSession}); 
} 

的形式从HTML提交:

<input id="submit" name="submit" type="submit" value="Login" onclick="LoginSubmit();"> 

从Node.js的控制台结果:

undefined 

回答

1

找到一个有用的链接这里的堆栈:
Express.js req.body undefined

我意识到req.body是不确定的为好。事实证明,您必须在允许快递服务任何路线之前配置所有内容。
我有一个app.get()app.post()部分之前。

最有用的部分是:

你必须确保你定义的配置之前确定的路线。

app.configure(function(){ 
    app.use(express.bodyParser()); 
    app.use(app.router); 
}); 
+1

是的,这是一个常见的快速表达点。请接受您自己的回答,以便将问题标记为已回答。 – 2013-03-11 16:09:55