Как передать массив объектов JSON в глобальный обработчик? - PullRequest
1 голос
/ 16 мая 2011

Я пытаюсь передать массив обратно в Global Handler (ashx), используя jQuery.ajax(...):

var ingredients = [];
for (var i = 0; i < rows.get_length(); i++) {
    var row = rows.get_row(i);

    ingredients.push({
        ID : i,
        IngType : TypeXYZ,
        Quantity : 100
    });
}

$.ajax({
    url: "WebServices/Calculator.ashx",
    dataType: 'json',
    data: { Data : ingredients },
    success: Repopulate
});

Однако всякий раз, когда я получаю эти результаты в Global Handler, я получаю context.Request.Params содержащий множество ключей, таких как:

"Data[0].ID"
"Data[0].IngType"
"Data[0].Quantity"
"Data[1].ID"
"Data[1].IngType"
"Data[1].Quantity"

Я бы ожидал только один ключ «данных», который затем я могу использовать JavaScript Serializer для преобразования в пригодный для использования класс.Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Я предлагаю использовать метод POST без какого-либо типа данных JSON, т.е. передавать строку JSON в качестве данных - например,

$.ajax({
    url: "WebServices/Calculator.ashx",
    type: 'POST',
    data: ({ Data : JSON.stringify(ingredients) }), //using JSON2 library from json.org
    success: Repopulate
});

Это должно выдать обычный запрос POST с одним параметром данных - поэтому на стороне сервера вы можете использовать context.Request.Form("data") для получения строки JSON и затем использовать любой десериализатор JSON (JavaScriptSerializer, JOSN.NET) для получения объекта .

0 голосов
/ 16 мая 2011

Массивы JavaScript через JQuery Ajax для Asp.Net WebMethod

взгляните на этот метод jquery: .serializeArray ()

tryбиблиотека json2.js .JSON.stringify(obj) преобразует ваш объект в строку JSON.

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