【问题标题】:How can I send an object to the server on form submit without ajax?如何在没有 ajax 的表单提交上将对象发送到服务器?
【发布时间】:2017-09-21 17:00:08
【问题描述】:

我有一个写在ASP.NET MVC 5 框架之上的应用程序。对于一个页面,我使用这个很棒的jQuery-QueryBuilder 插件让用户创建过滤器来缩小数据集的结果。

当用户“通过单击提交按钮”提交表单时,我想调用由jQuery-QueryBuilder 提供的函数builder.queryBuilder('getRules'),该函数返回需要发送到服务器的对象。我不希望请求以字符串形式发送。我也不想将其作为ajax 请求发送。

这就是我所做的。以下代码不起作用。当服务器收到请求时,规则始终为空。

$('#submit-form').click(function (event) {

    event.preventDefault();
    var btn = $(this);
    var rules = builder.queryBuilder('getRules');

    if (!$.isEmptyObject(rules)) {
        $('#QueryBuilder_Rules').val(rules);
        btn.closest('form').submit();
    }
});

我尝试使用AJAX 将发布请求发送到服务器,如下面的代码所示。下面的代码运行良好。但是,我不想使用 AJAX,我想使用常规表单发布请求来做同样的事情

$('#submit-form').click(function (event) {

    event.preventDefault();
    var btn = $(this);
    var rules = builder.queryBuilder('getRules');

    if (!$.isEmptyObject(rules)) {

        $.ajax({
          type: "POST",
          url: url,
          data: {Rules: rules}
        });
    }

});

如何使用标准发布请求将rules 对象作为对象而不是字符串正确发送到服务器?

【问题讨论】:

  • 您可以使用 js 创建一个临时表单来创建一个普通的 post 请求,或者只使用 async: false 并且您的 ajax 函数将与实际 post 类似,但当然浏览器必须支持 xhr
  • @slowdeath007 我尝试按照您的建议创建临时表单。但是正在发送的数据仍然是字符串而不是对象。

标签: javascript jquery ajax asp.net-mvc asp.net-mvc-5


【解决方案1】:

使用Ajax有什么问题?

您可以考虑执行以下操作:

$.ajax({
       type: "POST",                     
       url: url,                                                 
       data: JSON.stringify({Rules: rules}),           
       dataType: "json",
       contentType: "application/json",
       success: function (json) {

       }

[HTTPPost]
public void Rules(YourClass[] array){...}

【讨论】:

  • 我不想提交 Ajax。 +您将对象转换为字符串。你读过我的问题吗?
  • 嗨,杰伦,我确实回答了你的问题!并且因为它不可能完成你所要求的我建议你做我在例子中展示的......
猜你喜欢
  • 1970-01-01
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 2014-10-01
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多