AJAX-запрос к ASP.NET Web Service - какой тип параметра использовать? - PullRequest
3 голосов
/ 03 марта 2011

У меня есть массив объектов JSON, некоторые из которых содержат пары ключ / значение, для которых значение является массивом.

Пример:

var jsonArray = [{ "key1":"value1", "key2":["value21", "value22"]},
                 { "key1":"value3", "key2":["value41", "value42"]}];

РЕДАКТИРОВАТЬ: Случайно использовались фигурные скобки вместо скобок.

Я пытаюсь отправить это через AJAX в веб-службу ASP.NET, используя jQuery:

$.ajax({
    type: "post",
    url: "example.asmx/SomeFunction"
    data: "{ 'items': '" + JSON.stringify(jsonArray) + "' }",
    contentType: "application/json;charset=utf-8",
    dataType: "json"
});

Это правильный способ отправкиданные?Кроме того, какой тип данных мне нужен в параметре SomeFunction, чтобы принимать и анализировать данные JSON?

1 Ответ

6 голосов
/ 03 марта 2011

Это правильный способ отправки данных?

Нет, лучше было бы следующее:

$.ajax({
    type: "post",
    url: "example.asmx/SomeFunction"
    data: JSON.stringify({ items: jsonArray }),
    contentType: "application/json;charset=utf-8",
    dataType: "json"
});

Кроме того, какой тип данныхмне нужно в параметре SomeFunction принимать и анализировать данные JSON?

Он будет отображаться в:

public void SomeFunction(IEnumerable<Foo> items)
{
    ...
}

, где Foo определяется следующим образом:

public class Foo
{
    public string Key1 { get; set; }
    public IEnumerable<string> Key2 { get; set; }
}

В моем примере я использовал IEnumerable<T>, так как я предполагаю, что вы будете перечислять только значения, но если вам нужен индексатор, вы также можете определить их как массивы T[].

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