如何在没有ajax的表单提交的情况下将对象发送到服务器?

时间:2017-04-24 21:12:30

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

我有一个写在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对象作为对象而不是字符串正确地发送到服务器?

1 个答案:

答案 0 :(得分:0)

使用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){...}