Как отправить запрос json на рельсы с помощью jquery - PullRequest
5 голосов
/ 19 апреля 2011

Я хотел бы отправить JSON-запрос на сервер rails 3.У меня следующий запрос ajax:
$.ajax({ type: 'POST',<br> contentType: "application/json",<br> url: url, data: {email: "example@test.com", password: "password"},<br> success: onSuccess,<br> error: onError,<br> dataType: "json"<br> });

Однако сервер rails получает данные следующим образом:
{"_json"=>["object Object"]}
Где я хочу получить их как:
{"email"=>"exmaple@test.com", "password"=>"[FILTERED]"}

Я думаю, что это происходит потому, что jquery оборачивает данные объектом _json, если тип содержимого - json.

Кто-нибудь знает, как мне это сделать?

Ответы [ 3 ]

4 голосов
/ 18 августа 2011

Это происходит из-за ошибок в старой версии jquery. Теперь я пользуюсь jquery версии 1.5 и отправляю сообщение следующим образом:

$.post(url, { email: emailVal, password: passwordVal }, callback, "json").error(errorHandler);

Теперь отлично работает.

2 голосов
/ 20 апреля 2011

вы пытались выполнить сериализацию самостоятельно (используя jQuery.param)?

jQuery.param({email: "example@test.com", password: "password"})
==> "email=example%40test.com&password=password"

Так что ваш запрос ajax становится:

$.ajax({ type: 'POST',
contentType: "application/json",
url: url, data: $.param({email: "example@test.com", password: "password"}),
success: onSuccess,
error: onError,
dataType: "json"
});
0 голосов
/ 19 апреля 2011

Согласно документации jquery, если вы передаете объект данным, он попытается выполнить автоматическую десериализацию.

Установите processData: false, а затем установите данные в строку json.

http://api.jquery.com/jQuery.ajax/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...