2012-08-08 60 views
0

我有一個目標:Reciving發佈對象的node.js

var val = {username:'gilbertbw',password:'password',password2:'password',email:'[email protected]',firstname:'gilbert',lastname:'BW',test:true}; 

我對它運行一些驗證,然後將其張貼到我的node.js服務器:

console.log(
      $.ajax({ 
       type: 'POST', 
       url: '/signup', 
       data: val, 
       success: function(){console.log('data posted')}, 
       dataType: "json" 
      }) 
     ); 

在服務器我已經tryed剛剛調用對象VAL:

console.log(val.username); 

,並從正常後拉,就像我:

val = req.param(val,null); 
console.log(val.username); 

但是兩次螢火吐出來的是500 ISE:

"{"error":{"message":"val is not defined","stack":"ReferenceError: val is not defined at exports.signup (C:\\Users\\Gilbert\\WebstormProjects\\NodeOfGames\\routes\\user.js:37:21) 

,如果我只是console.log(val);它打印空 有問題的線是當我嘗試登錄val.username安慰。你如何recave在node.js中發佈的對象?

+0

分配'console.log'到'成功'是無效的。您將它分配給'console.log'的返回值,而不是讓它執行它。你需要使用'success:function(){console.log(..); }' – 2012-08-08 17:52:57

+0

@BradChristie它記錄'日誌'數據發佈到日誌只是好的想法 – gilbertbw 2012-08-08 17:55:38

+0

你是對的,它會 - 搶先調用ajax,而不是實際上成功回調。 – 2012-08-08 17:57:39

回答

0

val是客戶端變量。服務器無法知道您將該對象命名爲「val」。

data: val就像是:

data: {username:'gilbertbw',password:'password',password2:'password',email:'[email protected]',firstname:'gilbert',lastname:'BW',test:true} 

所以沒有val現場爲您的服務器發現。

做到這一點,而不是:

data: { 
    "val": val 
} 

編輯:

也,你行req.param(val,null);應該req.param("val",null);
val = req.body.val;
reference

+0

'val'的值仍然是' null「在服務器上,有沒有什麼特殊的我必須做的選擇'val'在服務器上? – gilbertbw 2012-08-08 18:00:05

+0

看看編輯我的答案。 – EyalAr 2012-08-08 18:17:50

+0

我仍然沒有定義'val,但是使用'console.log(req.body.val)'我在服務器日誌中獲得預期的響應。所以'val = req.body.val'對我來說工作正常 – gilbertbw 2012-08-08 18:39:35