mar*_*ith 4 c# jquery web-services asmx json.net
我很高兴使用javascript将javascript对象序列化为JSON
JSON.stringify
Run Code Online (Sandbox Code Playgroud)
并在c#/ asp.net中发送到我的"静态"webmethod并确定它到达..我需要正确数量的参数因此如果我的json对象有"startDate","endDate","reserve"那么我的webmethod需要这些作为参数.
"基本上我的订单对象,我有这个对象的许多参数,所以我需要在web方法上使用相同的数字 - 这有点乱?" - 我会解释
我在javascript中有一个相当复杂的"Order"对象,并希望使用stringify将其序列化并将其发送到我的webmethod但我不想指定所有参数是否有一种方法围绕这个?
我希望在我的网络方法上有这样的东西
public static bool MakeReservation(object order)
Run Code Online (Sandbox Code Playgroud)
然后在我的webmethod中我只有1个参数但是我可以使用JSON.NET将其解压缩为真正的c#对象.我已经尝试过这样发送json但是因为我的webmethod上只有1个参数失败了.
基本上我想说的是,如果我想继续使用我的webmethod但我不想在webmethod上指定15个参数
我希望JSON - String进入我的webmethod然后我可以在服务器上分解它.
这可能吗?
这是我目前如何使用jquery将我的JSON发送到服务器(webmethod)
var jsonData = JSONNew.stringify(orderObject);
$.ajax({
type: "POST",
url: "MyService.aspx/DoReservation",
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
success = true;
},
error: function(msg) {
success = false;
},
async: false
});
Run Code Online (Sandbox Code Playgroud)
如果您尝试提交如下所示的对象:
JSON.stringify({ endDate: new Date(2009, 10, 10), startDate: new Date() });
Run Code Online (Sandbox Code Playgroud)
它会尝试将endDate和startDate映射到webmethod中的相应参数.由于您只想接受一种方法,我怀疑您可以通过提交以下内容来逃避它:
JSON.stringify({ order: orderObject });
Run Code Online (Sandbox Code Playgroud)
它可能会合理地尝试将值分配给您的webmethod的'order'参数.没错,提交
JSON.stringify({ order: JSON.stringify(orderObject) });
Run Code Online (Sandbox Code Playgroud)
然后使用JSON.NET反序列化它肯定会起作用,但它更加丑陋,所以首先尝试第一个例子.那是我最好的一击.
| 归档时间: |
|
| 查看次数: |
18166 次 |
| 最近记录: |