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" }),

для поддержки старых браузеров, которые не имеют