2013-04-12 49 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在节点中的请求处理程序中可用。