这可能是一项非常简单的任务,但无论如何我都冒风险去问。
我有一个如下所示的对象变量:
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文件中设置了一个页面方法,我在其中放了一个断点但它永远不会到达那里;没有任何反应。
请让我知道我需要做些什么改变才能让它发挥作用。 感谢。
答案 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”是您的浏览器上已定义的帮助函数,用于转换和对象转换为字符串
希望这有帮助