JQuery не может отправлять массивы как тип содержимого JSON - PullRequest
0 голосов
/ 19 апреля 2011

Я использую скрипт, который выглядит следующим образом:

$.ajax({
    url: 'myservice',
    type: 'POST',
    contentType: 'application/json',
    data: ["test"],
});

Однако это вызывает запрос к myservice/?undefined=undefined, который, вероятно, указывает, что jQuery предполагает, что данные являются картой.Есть ли способ обойти это?Есть ли способ сериализации данных вручную (желательно без обращения к каким-либо сторонним библиотекам)?

Я тестировал свой сервис вручную, и он корректно работает с такими данными, как ["test"].

ПРАВКАОшибка, связанная с методом запроса.

EDIT (2): Интересно, теперь это вызывает 400 Bad request.Однако, если я переключаюсь на '["test"]' (строка), это работает.Я использую jQuery 1.5.2.

Ответы [ 3 ]

4 голосов
/ 19 апреля 2011

изменить method: 'POST' на type: 'POST'

документ | пример

Редактировать: для data вы должны использовать либо строку запроса example=test&examplex=test2, либо объект javascript {example: "test", examplex: "test2"}

1 голос
/ 19 апреля 2011
$.ajax({
    url: 'myservice',
    method: 'POST',
    contentType: 'application/json',
    data: '["test"]',
});

Обратите внимание, что вам нужно передать JSON в виде строки.

Если ваш json сложный, вы всегда можете использовать stringify Крокфорда .

0 голосов
/ 19 апреля 2011

данные должны быть такими объектами, как:

{var1: 'test', var2: 'test'}

Кроме того, я думаю, что вы можете сделать ваш contentType просто: 'json'

Если вам нужно сериализовать форму и отправить значения, jQuery имеет функцию для этого:

$("formId").serialize();

см. Эта ссылка

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