2013-04-12 45 views
0

我提交post data與阿賈克斯數據庫看起來像這樣一種形式:如何根據請求解析原始數據?

function markAsRead(id) { 
    console.log('Triggered'); 
    $.ajax({ 
     type: 'POST', 
     url: '/admin/assessment.html', 
     data: id, 
     success: function(data) { 
      if (data.error) { 
       console.log('We had an error.'); 
      } else if (data.success) { 
       console.log('Marker updated.'); 
      } 
     } 
    }) 
} 

(function() { 
    var element = document.getElementsByName('markAsRead'); 
    for(var i = 0; i < element.length; i += 1) { 
     element[i].addEventListener('click', function(e) { e.preventDefault; 
      markAsRead(this.getAttribute('data-value')); 
     }); 
    } 
})(); 

我有我的網頁上看起來像這樣的例如多個錨:

<a href="#" name="markAsRead" data-value="5135135">Mark As Read</a> 

我只是想知道對事物的Node.js的一面,我怎麼可能會分析這些數據,我想:

var id = req.body.markAsRead; 

    console.log('Data is ' + id); 

但它只是說UND efined。任何信息對於如何分析這個請求數據都是很好的。謝謝! (Anchor不在任何形式)

回答

1

首先,你應該從客戶端發佈具有命名參數或比字符串更結構的數據。

$.ajax({ 
    type: 'POST', 
    url: '/admin/assessment.html', 
    data: { id: id }, 
    success: function(data) { 
     if (data.error) { 
      console.log('We had an error.'); 
     } else if (data.success) { 
      console.log('Marker updated.'); 
     } 
    } 
}) 

其次,當您分析在節點側req.body,你解析時被作爲請求主體,其中包括您的參數字符串{ID:「someValue中」}。你可以自己解析,但我猜你正在使用類似express或另一種抽象的節點的http.Server實現頂部支持middleware stack。我建議使用connect bodyParser()中間件,該中間件將req.body字符串轉換爲具有已發佈屬性的對象。這會使req.body.id在節點中的請求處理程序中可用。