当前位置: 首页 > 面试题库 >

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

辛建业
2023-03-14
问题内容

我正在将数据发布到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
});

我还想传递回一个(加密的)ID和时间戳数组,以便服务器可以对其进行解密,然后在保存数据之前验证数据是否仍然新鲜。

非常重要的一点是,数据对象是独立的,并且不是一个或另一个的子对象,也不是包装器数组中的子对象(由于服务器端的反射反序列化)。同样重要的是要注意,我要异步执行此操作,而
不是 作为表单提交。

我的问题是:有什么方法可以使用’application / json’作为内容类型回发2个JSON对象?

我的另一个问题是:是否可以做一个更好的/另一种方式?

提前致谢!

更新 :通过将contentType参数更改为默认值,然后将字符串化的ajax数据作为单独的命名参数发送到querystring中,解决了我的问题。

当您使用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对象…,对吗?我的坏人…是的,您可以这样做…只需更改此行:

data: $.toJSON(data),

至:

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

对不起,我很困惑。



 类似资料:
  • 问题内容: 我有以下内容,但它不起作用,我在stackoverflow上的某个地方读到了它的工作原理,但我似乎无法使其工作..它出错了……我在做错什么吗? 如果我确实传递了这样的数据-它可以工作-所以我知道我的服务正在工作 问题答案: 我相信代码将在对象上调用.value或.toString(),然后通过网络传递。您想传递JSON。 因此,包括JSON JavaScript库 http://www

  • 问题内容: 我有以下jQuery代码在aspx页面中调用webmethod 这是网络方法签名 这很好。 但是现在我需要将两个参数传递给Web方法 新的网络方法如下所示 如何更改客户端代码以成功调用此新方法签名? 编辑: 以下2种语法有效 和 其中filter和locale是局部变量 问题答案: 不要使用字符串串联来传递参数,只需使用数据哈希即可: 更新: 正如@Alex在注释部分所建议的那样,AS

  • 问题内容: 我有一个jQuery ajax函数,想提交一个完整的表单作为发布数据。我们正在不断更新表单,因此不断更新应该在请求中发送的表单输入变得很乏味。 问题答案: 有一个函数可以做到这一点: http://api.jquery.com/serialize/

  • 问题内容: 我有一个本地JSON对象,其格式如下: 我想设置此作为一个jQuery的数据源的数据表,并尝试这样的: DataTables插件加载并尝试绘制表,但显示错误“表中无可用数据” 我不是在进行AJAX调用,只是想从本地JS变量访问JSON对象。 问题答案: 提供您自己的数据的属性不是: 工作小提琴

  • 问题内容: 我正在学习Java servlet,并且为“ GET”和“ POST”编写了两个单独的servlet。当“ GET”请求发送到服务器时,Servlet将访问数据库并检索所有内容,并将结果转换为Google Charts可以识别的格式。当“POST”请求发送到服务器时,servlet获取参数并将其添加到Java对象,然后DAO将数据添加到数据库。但是,当我在输入后单击“添加”按钮时,We

  • 问题内容: 我想在单个请求中发送多个不同的JSON对象,我觉得在单个请求中像文件一样流式传输多个JSON对象会更好,所以请告诉我是否可行,如果可以的话请给我一个思路要使用Alamofire做到这一点,下面是我要发布的原始正文(应用程序/ json)数据的格式 我尝试了下面的代码,但是由于body参数的格式不正确,因此无法正常工作,这就是我想尝试在单个请求中将多个JSON对象作为流发送的原因,请注意