jquery - 使用 jQuery 的 $.ajax() 将多个 Json 对象作为数据传递

标签 jquery asp.net-mvc ajax json

我正在将数据发布到 MVC Controller ,并尝试维护状态以实现乐观并发。我目前正在发回 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
});

我还有一个(加密的)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
});

这个问题的出现确实是因为我对这种类型的数据操作缺乏经验,我希望将来寻找这个问题的人可能会偶然发现这个问题。

谢谢!

最佳答案

据我所知,没有办法发回两个完全不同的 JSON 对象,它们不是单个父 JSON 对象的子对象,并让 jQuery 使用 .ajax() 为您解码它方法。我想,您可以使用两个 JSON 对象作为字符串进行回复,然后使用外部 JSON 库将字符串评估为 Javascript 对象。

这能回答你的问题吗?

哎呀: 您询问的是如何从 jquery 将两个不同的 JSON 对象发布到您的 Controller ...,对吧?我的错...是的,你可以这样做...只需更改这一行:

data: $.toJSON(data),

至:

data: { json_1:$.toJSON(data_1), json_2:$.toJSON(data_2) },

抱歉搞混了。

关于jquery - 使用 jQuery 的 $.ajax() 将多个 Json 对象作为数据传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1545316/

相关文章:

jquery - 我在哪里可以下载旧版本的 AnythingSlider?

jquery - 如何删除使用 jQuery 角插件创建的圆角?

JQuery for循环,等待函数完成

xml - 如何从 Razor View 中显示 xml 元素?

jquery - 如何在提交表单后显示加载图标,但在模型在 ASP .NET MVC 中无效的情况下不显示

JavaScript 仅在页面加载后运行一次

jQuery.getJSON 在使用 gdata json-c 的 IE8 中无法正常工作。为什么?

javascript - ggggleClass 不是第一次添加类 & 进一步工作

asp.net mvc4 ajax 操作链接

javascript - 同步 html 中的文本区域