节点js,使用couchdb发出请求

时间:2016-01-22 16:58:37

标签: javascript json node.js xmlhttprequest put

我正在尝试从PUT发送JavaScript请求。我无法将javascript的值发送到node js,它正在给我编辑:error is Unexpected token: o at Object.parse()。在这一行var message = JSON.parse(req.responseText);也许我应该提到我正在使用bodyParser。

       request.open("PUT", "myurl", true);
       request.setRequestHeader('Content-Type', 'application/json');
       request.send(JSON.stringify({message: "from javascript"}));

来自node js我想将该值发送给couchDB,但我不确定如何从message传递javascript

router.put('/fillMessage', function(req, res){
      var request = new XMLHttpRequest();
     //...
    var message = req.body;

    var newData = {_id: data._id, _rev: data._rev, message: "JS value goes here"};
    //...

});

现在我正在调试节点js req变量,似乎没有传递给它的json值。没有responseTextbody属性

1 个答案:

答案 0 :(得分:1)

大多数情况下Unexpected token: o at Object.parse()表示您尝试解析的内容不是JSON编码的字符串。它可能已经是一个对象,例如JSON.parse({ two : 2 })给出了相同的错误。

JSON.parse尝试将输入转换为字符串,然后将其解析为JSON,所以

var foo = { two : 2 };
JSON.parse(foo); // throws, equivalent to JSON.parse("[object Object]")

使用JSON.parse时,最好先检查req.responseText是否为字符串,然后将JSON.parse包装在try / catch块中。