【发布时间】: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