Подтвердить что ты не робот

Установка POST-объекта объекту JSON с помощью jQuery

Я пытаюсь написать веб-API на основе JSON в приложении Sinatra. Я хочу POST объект JSON как тело сообщения (с правильным набором содержимого), но я боюсь.

В Cocoa я бы сделал что-то вроде

[mutableHTTPRequest setHTTPBody:dataRepresentationOfJSONObject];

И тип контента, установленный в JSON, затем будет размещать тело HTTP как объект JSON. Я пытаюсь сделать это с помощью jquery. Лучшее, что я могу сделать до сих пор, просто переносит объект JSON и превращает его в обычный стиль стиля key=value&…, но это не то, что я хочу.

Мой Javascript:

var data = { "user" : "me!" };
$.ajax({
    type: "POST",
    url: "/api/user/create",
    contentType: 'application/json',
    data: data,
    success: function(r) {

});

Любые указатели на то, как это сделать? Моя цель состоит в том, чтобы моя Синатра сделала следующее:

post "/api/user/create" do
    js = JSON.parse(request.body.read)
    # do something with the js object… this works when POSTing from Cocoa
end
4b9b3361

Ответ 1

Добавьте параметр processData в свой запрос ajax и установите для него значение false. Кроме того, вам нужно подкрепить свой объект, чтобы превратить его в JSON.

var data = { "user" : "me!" };
$.ajax({
    type: "POST",
    url: "/api/user/create",
    processData: false,
    contentType: 'application/json',
    data: JSON.stringify(data),
    success: function(r) {

});

JSON.stringify не будет работать в более старых версиях IE, если вы его не реализуете. http://json.org