2016-01-22 2 views
0

Я пытаюсь отправить запрос PUT от JavaScript. У меня возникли проблемы с отправкой значения от javascript до node js, он дает мне право редактировать: error is Unexpected token: o at Object.parse(). на этой строке var message = JSON.parse(req.responseText); Возможно, я должен был упомянуть, что использую bodyParser.Узел js, запрос запроса с couchdb

 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"}; 
    //... 

}); 

Теперь я отладка узла расслоения плотной req переменного и, кажется, чтобы не было передано значение json. Нет responseText, или body атрибуты

ответ

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.

+0

Спасибо, что я отредактировал мой код, но все же переменная req не имеет переданных в нее значений javascript. Нет атрибутов .body или .responseText. Я что-то делаю неправильно в javaScript? –