Javascript 如何根据请求解析原始数据?

Javascript 如何根据请求解析原始数据?,javascript,node.js,Javascript,Node.js,我有一个表单,用于使用Ajax向数据库提交post数据,如下所示: function markAsRead(id) { console.log('Triggered'); $.ajax({ type: 'POST', url: '/admin/assessment.html', data: id, success: function(data) { if (data.error) {

我有一个表单,用于使用Ajax向数据库提交
post数据
,如下所示:

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'));
        });
    }
})();

但它只是说未定义。任何关于如何解析此请求数据的信息都非常有用。谢谢(锚定不在任何表单中)

首先,您应该使用命名参数或比字符串更结构化的内容发布来自客户端的数据

$.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实现之上使用另一个支持。我建议使用中间件,它将req.body字符串转换为具有已发布属性的对象。这将使节点中的请求处理程序中的req.body.id对您可用

var id = req.body.markAsRead;

  console.log('Data is ' + id);
$.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.');
        }
    }
})