jQuery проводка действительный json в теле запроса
и по jQuery Ajax docs, он сериализует данные в виде строки запроса при отправке запросов, а параметр processData:false
должен позволить мне отправить фактический JSON в теле. К сожалению, мне трудно определить сначала, происходит ли это, и 2nd, как выглядит объект, который отправляется на сервер. Все, что я знаю, это то, что сервер не анализирует то, что я отправляю.
при использовании http клиент для размещения объекта литерал {someKey:'someData'}
, это работает. Но при использовании jQuery с data: {someKey:'someData'}
, это не удается. К сожалению, когда я анализирую запрос в Safari, он говорит, что полезная нагрузка сообщения [object Object]
... отличный... и в Firefox сообщение пустое...
при регистрации содержимого тела на стороне Java он буквально получает [object Object]
Итак, как отправить реальные данные JSON??
кто-нибудь имел опыт работы с Java сервис сериализации JSON-данные в теле запроса, с просьбой отправить в jQuery?
кстати, вот полный $.запрос ajax:
$.ajax({
contentType: 'application/json',
data: {
"command": "on"
},
dataType: 'json',
success: function(data){
app.log("device control succeeded");
},
error: function(){
app.log("Device control failed");
},
processData: false,
type: 'POST',
url: '/devices/{device_id}/control'
});
1 ответов
фактический запрос JSON будет выглядеть так:
data: '{"command":"on"}',
где вы отправляете фактическую строку JSON. Для более общего решения используйте JSON.stringify()
для сериализации объекта в JSON, например:
data: JSON.stringify({ "command": "on" }),
для поддержки старых браузеров, которые не имеют