dan*_*ano 7 ajax asp.net-mvc jquery json
我正在将数据发布到MVC控制器,我正在尝试维护状态以及乐观并发.我目前正在回复一个JSON请求,但是对于可行的替代方案是开放的吗?
我已经使用以下命令发布了一个名称/值集合:
$.ajax({
url: g_appPath + "/Rounding.aspx/Round/" + $("#OfferId").val(),
type: 'POST',
dataType: 'html',
data: $.toJSON(data), // <-- data = name/value array
contentType: 'application/json; charset=utf-8',
beforeSend: doSubmitBeforeSend,
complete: doSubmitComplete,
success: doSubmitSuccess
});
Run Code Online (Sandbox Code Playgroud)
我还有一个(加密的)id和时间戳数组,我希望将其传回,以便服务器可以对其进行解密,然后在保存数据之前验证数据是否仍然新鲜.
非常重要的是,数据对象是独立的,并且不是一个或另一个的子节点或在包装器数组中(因为在服务器端反射反序列化).同样重要的是要注意我想要异步执行此操作而不是表单提交.
我的问题是:有什么办法可以使用'application/json'作为内容类型回发2个JSON对象吗?
我的另一个问题是:有没有更好的/另一种方式我可以做到这一点?
提前致谢!
更新:我解决了我的问题,通过将contentType参数更改为默认值,而是将字符串化的ajax数据作为单独的命名参数发送到查询字符串中.
当你使用contentType:'application/json; charset = utf-8',这会将数据推送到请求的主体,而不是查询字符串.我的新$ .ajax()帖子现在看起来像这样:
$.ajax({
url: g_appPath + "/Rounding.aspx/Round/" + $("#OfferId").val(),
type: 'POST',
dataType: 'html',
data: "RoundingData=" + $.toJSON(data) + "&StateData=" + $.toJSON(stateData),
// --removed! contentType: 'application/json; charset=utf-8',
beforeSend: doSubmitBeforeSend,
complete: doSubmitComplete,
success: doSubmitSuccess
});
Run Code Online (Sandbox Code Playgroud)
这个问题真的出现了,因为我对这种类型的数据操作缺乏经验,我希望将来有人能够发现这个问题.
谢谢!
担
Kyl*_*ris 16
据我所知,没有办法发回两个完全不同的JSON对象,这些对象不是单个父JSON对象的子对象,并且让jQuery使用该.ajax()方法为您解码.我想,您可以使用两个JSON对象作为字符串进行回复,然后使用外部JSON库将字符串计算为Javascript对象.
这是否回答你的问题?
Ooops: 你问的是从jquery向你的控制器发布两个不同的JSON对象......,对吧?我的坏...是的,你可以这样做......只需改变这一行:
data: $.toJSON(data),
Run Code Online (Sandbox Code Playgroud)
至:
data: { json_1:$.toJSON(data_1), json_2:$.toJSON(data_2) },
Run Code Online (Sandbox Code Playgroud)
抱歉混淆了.
| 归档时间: |
|
| 查看次数: |
48651 次 |
| 最近记录: |