将对象变量转换为json字符串,用于asp.net页面方法

时间:2011-05-03 17:54:56

标签: asp.net json jquery

这可能是一项非常简单的任务,但无论如何我都冒风险去问。

我有一个如下所示的对象变量:

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
    });
};

我在.cs文件中设置了一个页面方法,我在其中放了一个断点但它永远不会到达那里;没有任何反应。

请让我知道我需要做些什么改变才能让它发挥作用。 感谢。

3 个答案:

答案 0 :(得分:2)

您需要将TheObject序列化为JSON字符串,并确保GetCount方法接受与TheObject具有相同签名的对象。

我使用jQuery.JSON库来执行此操作,以便我的语法变为:

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

我使用this library,但你可以用类似的方式对任何其他库实现同样的效果

答案 1 :(得分:0)

看一下这个主题:JSON stringify missing from jQuery 1.4.1?

摘要:jQuery没有本机方法来执行此操作。但那里有很多插件。

修改

接收JSON对象的示例C#代码:

[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"
});

答案 2 :(得分:0)

您需要知道的第一件事是您需要将您的方法名称与您的网址相匹配

例如,如果你的代码后面的方法被命名为“calculate”,你的url必须是这样的“../ Pages / TestPage.aspx / calculate”

您需要记住的另一件事是您的方法的参数,参数的名称和类型必须在您的ajax调用和您的方法(代码隐藏)中匹配

如果您的方法符号是这样的

[的WebMethod] public void Calculate(string data){
//你的代码在这里 }

你的ajax电话必须是这样的:

function 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”是您的浏览器上已定义的帮助函数,用于转换和对象转换为字符串

希望这有帮助