Как установить сырое тело в jQuery Ajax? - PullRequest
37 голосов
/ 31 января 2012

Вместо отправки списка пар ключ / значение мне нужно отправить строку JSON в качестве тела запроса POST.
Я делаю этот запрос POST, используя функцию $ .ajax в jQuery.
Как правильно установить?

Когда я говорю строку JSON, я имею в виду что-то вроде: {action:'x',params:['a','b','c']}.

Вот как бы я использовал эту строку JSON в PHP на сервере:

var_dump(json_decode(file_get_contents('php://input')));

Результаты:

stdClass Object
    action = x
    params = Array
        (
    0 = a
    1 = b
    2 = c
        )

Ответы [ 2 ]

91 голосов
/ 31 января 2012

Попробуйте:

$.ajax('url',{
    'data': JSON.stringify(yourJSONObject), //{action:'x',params:['a','b','c']}
    'type': 'POST',
    'processData': false,
    'contentType': 'application/json' //typically 'application/x-www-form-urlencoded', but the service you are calling may expect 'text/json'... check with the service to see what they expect as content-type in the HTTP header.
});

Надеюсь, это поможет,

Пит

4 голосов
/ 31 января 2012

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

$.ajax({
data:JSON.stringify({action:'x',params:['a','b','c']})
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...