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

在MVC控制器中使用多个参数时,Ajax表单序列化不绑定

颜嘉福
2023-03-14
问题内容

我的模型有多个输入的视图(Html.TextBoxFor(x => x.attribute)等。我的ajax方法是:

function callMethod() {
    $.ajax({
        type: "POST",
        data: $('#Form').serialize() ,
        url: '@Url.Action("formMethod", "Test")',
    }).done(function (newTable) {
        $('#RefundTableDiv').html(newTable);
    });
};

并且这可以完美地工作,该模型完美地适用于formMethod,但是当我更改formMethod并添加另一个参数(例如“ int
test”)时,它不再起作用。

我的方法如下:

function callMethod() {
 var number = 2;
    $.ajax({
        type: "POST",
        data: {"model": $('#Form').serialize(),
               "test": number}, 
        url: '@Url.Action("formMethod", "Test")',
    }).done(function (newTable) {
        $('#RefundTableDiv').html(newTable);
    });
};

“测试”:编号确实正确输入到控制器中的方法,但是模型现在突然为空?

我究竟做错了什么?


问题答案:

使用.serialize()会将您的模型序列化为查询字符串(例如someProperty=someValue&anotherProperty=anotherValue&...)。要添加其他名称/值对,您可以手动添加,例如

var data = $('#Form').serialize() + '&test=' + number;
$.ajax({
    ....
    data: data;

或使用param()方法(如果要添加多个项目和/或数组,则很有用)

 var data = $("#Form").serialize() + '&' + $.param({ test: number }, true);
 $.ajax({
    ....
    data: data;


 类似资料:
  • 我有以下映射: 和以下道: 当在控制器方法中返回此道的结果时,我看到无限递归json: [{"contentId": 1,"name":"DSC_0029. JPG","版主状态":"IN_PROGRESS","版主评论":""","内容":{"userContent":{"contentId": 1,"name":"DSC_0029. JPG","版主状态":"IN_PROGRESS","版主评

  • 有没有一种简单的方法可以将URL中的多个参数打包到一个单元中,并将其发送到Spring MVC控制器? 此外,我们如何处理不同数量的参数,例如,如果我有一些信息列表的大小不同?

  • 问题内容: 我有 我以这种方式传递profileJson: 但是我的profileJson对象具有所有空字段。我应该怎么做才能使spring解析我的json? 问题答案: 这可以通过自定义编辑器完成,该编辑器将JSON转换为UserProfile对象: 这是为了在控制器类中注册编辑器: 这是使用编辑器解组JSONP参数的方法:

  • 我需要实现一个RESTendpoint,它接收我使用的多部分/表单数据: Spring防尘套 科特林 SpringMVC 提交包含以下部分的多部分表单: 部署名称------文本/普通 启用重复筛选------文本/普通 仅更改部署------文本/普通 部署源------文本/普通 租户id------文本/普通 *----应用程序/八位字节流 Rest控制器看起来是这样的: 对于所有有效的参数

  • 问题内容: 是否需要包装支持对象?我想做这个: 并使用这样的JSON: 但是我必须使用: 然后使用以下JSON: 那是对的吗?我的另一种选择是将更RequestMethod改为GET并@RequestParam在查询字符串中使用或@PathVariable与一起使用RequestMethod。 问题答案: 你是正确的,@ RequestBody带注释的参数应该可以容纳请求的整个内容并绑定到一个对象