2013-03-11 131 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