2014-09-30 29 views
0

當我從Ajax調用中獲取nodejs中的發佈數據時,它可以顯示在console.log中,但是當我想將其分配給另一個變量或僅顯示在頁面上時,它會變成[object, object] 。 這是爲什麼?發佈Ajax並獲得節點中的空對象

$.ajax({ 
    type: "POST", 
    url: 'http://127.0.0.1:5075/testEditmode.html', 
    'Content-Type': 'application/x-www-form-urlencoded', 
    data: info2value + '|' + colorvalue + '|' 
}); 

var express = require('express'); 
var app = express(); 

var bodyParser = require('body-parser') 
app.use(express.json()); 
app.use(bodyParser.urlencoded({ 
    extended: true 
})); 

app.post('/testEditmode.html', function (req, res) { 
//   console.log(req.body); 


requestData = ''; 
requestData += req.body; 
console.log(requestData.toString()); 
//   console.log(req.body); 
var splited = requestData.split("|"); 
var splitedCoords = requestData.split(","); 

Request data = [object, object]console.log(req.body)顯示它應該。 toString()沒有幫助。

我該怎麼辦?

+0

'req.body'是一個對象,你期望'+ = req.body'會產生什麼結果? – tymeJV 2014-09-30 14:04:39

+1

'info2value +'|' + colorvalue +'|''看起來不像'application/x-www-form-urlencoded'格式! – Quentin 2014-09-30 14:04:57

+0

'[object,object]'是將對象轉換爲字符串時發生的情況。你不能像在php中那樣做一個'var dump'。你可以編寫自己的方法,雖然 – ndugger 2014-09-30 14:05:05

回答

1

命名空間data在您的jQuery的要求:

$.ajax({ 
    type: "POST", 
    json: true, // added this 
    url: 'http://127.0.0.1:5075/testEditmode.html', 
    'Content-Type': 'application/x-www-form-urlencoded', 
    data: {infoValue: info2value + '|' + colorvalue + '|'} 
}); 

那麼你可以這樣做:

requestData = ''; 
requestData += req.body.infoValue; 

如果使用body-parser中間件你告訴快遞解析請求的主體,現在req.body是一個對象,所以你實際上在做:

var requestData = '' + {}; // "[object Object]" - Same as obj.toString() 

而不是真的變異req.body,這就是爲什麼req.body仍然是一個對象。