преобразование объектной переменной в строку json для метода страницы asp.net - PullRequest
1 голос
/ 03 мая 2011

Вероятно, это очень простая задача, но я все равно рискну спросить.

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

var MyObj = {"Param1": "Default",
             "Param2": "test",
             "Param3": 3 };

Я использую ASP.net и пытаюсь передать этот объект методу страницы через jquery.

Пока у меня есть этот код JavaScript:

function LoadObject () {

  var TheObject = MyObj.toString();

  $.ajax({
    type: "POST",
    url: "../Pages/TestPage.aspx/GetCount",
    data: TheObject,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: successFn,
    error: errorFn
    });
};

У меня есть метод page, настроенный в файле .cs, и я установил в нем точку останова, но она никогда не достигается; ничего не происходит.

Пожалуйста, дайте мне знать, какие изменения мне нужно сделать, чтобы это заработало. Спасибо.

Ответы [ 3 ]

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

Вам необходимо сериализовать TheObject в строку JSON и убедиться, что метод GetCount принимает объект с той же сигнатурой, что и TheObject.

Я использую библиотеку jQuery.JSON, чтобы сделать это так, чтобы мой синтаксис стал:

data: "{ methodParameterName: " + $.toJSON(TheObject) + " }"

Я использую эту библиотеку , но вы можете получить то же самое слюбая другая библиотека аналогичным образом

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

Первое, что вам нужно знать, это то, что вам нужно сопоставить имя вашего метода с вашим URL

например, если ваш метод в вашем коде называется «рассчитать», ваш URL должен быть примерно таким "../Pages/TestPage.aspx/calculate"

Другая вещь, которую вам нужно иметь в виду, это параметры вашего метода, имена и типы ваших параметров должны совпадать при вызове ajax и вашем методе (код позади)

если знак вашего метода что-то вроде этого

[WebMethod] public void Calculate (строковые данные) {
// ваш код здесь
}

Ваш вызов ajax должен быть таким:

функция LoadObject () {
var objetoJson = {
данные: JSON.stringify (MyObj)
};

$ .ajax ({
Тип: "POST",
URL: "../Pages/TestPage.aspx/Calculate",
данные: objetoJson,
contentType: "application / json; charset = utf-8",
dataType: "json",
успех: successFn, ​​
ошибка: errorFn
});
};

Этот раздел так важен:

var objetoJson = {
данные: JSON.stringify (MyObj)
};

имя "data" - это имя вашего параметра в вашем методе (код позади), а "JSON.stringify" - это уже определенные в вашем браузере вспомогательные функции для преобразования и возражения в строку

Надеюсь, это поможет

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

Взгляните на эту тему: Отсутствует строка JSON в jQuery 1.4.1?

Аннотация: в jQuery нет встроенного метода для этого.Но есть много плагинов.

РЕДАКТИРОВАТЬ

Пример кода C #, получающего ваш объект JSON:

[WebMethod]
public static int GetCount(GetCountParams p)
{
    // ... Do something with p.Param1, p.Param2, etc.
    return 0;
}

public class GetCountParams
{
    public string Param1 { get; set; }
    public string Param2 { get; set; }
    public string Param3 { get; set; }
}

РЕДАКТИРОВАТЬ 2

Пример вызова JQuery AJAX с использованием этого объекта в качестве параметра:

$.ajax({
    type: "POST",
    url: "../Pages/TestPage.aspx/GetCount",
    data: "{ p: '" JSON.stringify(MyObj) + "' }",
    contentType: "application/json; charset=utf-8",
    dataType: "json"
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...