JSON PUT возвращает код состояния 400

Я ДОЛЖЕН сделать запрос PUT, но, что бы я ни пытался, я получаю код состояния 400, который означает «Запрос не может быть выполнен из-за неправильного синтаксиса». Я не могу понять, в чем проблема. Вот часть запроса (с использованием knockoutjs и dropwizard):

self.save = function(person){
    $.ajax("/testtest/hello-world?", {
        data: person,
        type: "PUT", 
        contentType: "application/json"
    });
};

Он даже не доходит до сервлета, и, насколько я знаю, URL-адрес правильный. Вот сообщение с запросом:

0:0:0:0:0:0:0:1 -  -  [21/Jul/2014:08:02:45 +0000] "PUT /testtest/hello-world? HTTP/1.1" 400 - "http://localhost:8080/testtest/assets/index.htm" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" 19

и сообщение об ошибке:

Unrecognized token 'name': was expecting 'null', 'true', 'false' or NaN

person Cupple Kay    schedule 21.07.2014    source источник
comment
Есть ли какие-либо другие сообщения в ответе http, который возвращается?   -  person Matt Ellen    schedule 21.07.2014
comment
@MattEllen Я опубликовал все сообщение об ошибке.   -  person Cupple Kay    schedule 21.07.2014
comment
Показанное вами «сообщение об ошибке» выглядит просто соответствующей строкой из журнала доступа; проверьте, что журнал ошибок должен сказать о фактической причине ошибки.   -  person CBroe    schedule 21.07.2014
comment
@CBroe Невозможно десериализовать экземпляр java.util.ArrayList из токена VALUE_STRING, но здесь нет никакого arrayist ...   -  person Cupple Kay    schedule 21.07.2014
comment
Я думаю, что вы неправильно используете ko.toJSON, обычно вы просто передаете ему объект с наблюдаемыми объектами, а не конструируете литерал объекта.   -  person m90    schedule 21.07.2014
comment
@ m90 Все равно не будет работать с: data person, в вопросе тоже поменяю.   -  person Cupple Kay    schedule 21.07.2014
comment
данные ajax должны быть объектом, что-то вроде data: {p: person}   -  person Rajesh    schedule 21.07.2014
comment
@Rajesh, тогда он говорит, что p должно быть истинным, ложным, нулевым или NaN   -  person Cupple Kay    schedule 21.07.2014
comment
Из официального документа jquery ajax (): тип запроса (POST или GET), по умолчанию - GET. Примечание. Здесь также можно использовать другие методы HTTP-запроса, такие как PUT и DELETE, но они поддерживаются не всеми браузерами.   -  person Rajesh    schedule 21.07.2014
comment
добавьте обработчик ошибок для вызова ur ajax и посмотрите, в чем проблема   -  person Rajesh    schedule 21.07.2014
comment
@Rajesh В сообщении об ошибке говорится [объект Object]   -  person Cupple Kay    schedule 21.07.2014


Ответы (1)


Это сработало, когда я изменил его на

self.save = function(person){
    $.ajax({
        type: "PUT", 
        data: person,
        url : "/testtest/hello-world?",
    });
};
person Cupple Kay    schedule 21.07.2014
comment
хм ... не видел этого ... вы пропустили параметр url для вызова ajax. - person Rajesh; 21.07.2014
comment
@Rajesh У меня раньше было так: $ .ajax (/ testtest / hello-world ?, { - person Cupple Kay; 21.07.2014