- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在重构我对 $.ajax
的使用,以使用 jQuery 表单插件提交表单。 API指出可以将传递给 $.ajax
的任何选项传递给 $.ajaxSubmit
。我希望修改 beforeSubmit
中的选项对象,添加 data
属性。提醒 processSubmit
中 options.beforeSubmit
的值表明这是由处理程序初始化的选项对象并且数据已设置,但由于选项对象已经初始化如果没有 data
属性,它不会包含在发送到服务器的帖子中。是否可以在 beforeSubmit
中或以其他方式修改选项对象?
文档准备好后,我将处理程序绑定(bind)到 submit()
:
$("#myform").submit(function() {
var options = { dataType: 'json',
beforeSubmit: processSubmit,
success: endSubmit };
$(this).ajaxSubmit(options);
return false;
});
processSubmit(arr, $form, options)
函数将要发送到服务器的数据打包为 JSON:
function processSubmit(arr, $form, options) {
var followers =[];
$($("#follower-multi-select").children().filter("li")).each(function() {
if ($(this).hasClass("selected")) {
var fwr = $(this).attr("id");
followers.push(fwr);
}
});
var postData = { followers : followers };
alert('beforeSubmit is: ' + options.beforeSubmit);
options.data = 'json='+$.toJSON(postData);
alert('data set: ' + options.data);
}
表单 HTML:
<form id="myform" action="/myaction" method="post">
<fieldset>
<legend>Choose your competitors</legend>
<ul id="follower-multi-select" class="follower-multi-select">
{% for f in follower_thumbs %}
<li id="{{ f.hashedkey }}"><img src='{{ f.thumb }}' alt="{{ f.name }}" /><span class="name-multi-select">{{ f.name }}</span></li>
{% endfor %}
</ul>
</fieldset>
<input id="send" type="submit" class="large" value="send" />
</form>
最佳答案
而不是 beforeSubmit
你应该使用the beforeSerialize
option ,因此您的数据在序列化时会被包含在内。您没有设置 .data
关于传递给 $.ajax()
的选项,您正在设置 .data
关于$.ajaxSubmit()
options,这是序列化时要包含的额外数据插件的属性。当beforeSubmit
发生这种情况时,序列化已经已经完成,您需要在此之前介入,如下所示:
$("#myform").submit(function() {
var options = { dataType: 'json',
beforeSerialize: processSubmit,
success: endSubmit };
$(this).ajaxSubmit(options);
return false;
});
function processSubmit($form, options) {
var followers = $("#follower-multi-select > li.selected").map(function() {
return this.id;
}).get();
var postData = { followers : followers };
alert('beforeSubmit is: ' + options.beforeSubmit);
options.data = 'json='+$.toJSON(postData);
alert('data set: ' + options.data);
}
我还用过 .map()
和 >
child-selector这里是为了让你的数组的获取变得更简单,但是你原来的方法是有效的......只需注意回调中的参数与 beforeSubmit
不同的重要区别。 ,没有arr
beforeSerialize
的参数回调。
关于jquery - 如何使用 jQuery 表单插件更新 beforeSubmit 函数中的选项对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3202527/
我的 jQuery Form 插件中的 beforeSubmit 函数需要检查所选文件是否已存在于服务器上。这是相关代码: $('#frmSermonUpload').ajaxForm({ b
在 MVC 中,有没有办法在使用 Ajax.BeginForm 时触发 onBeforeSubmit 事件?我想在客户端验证一些数据并给用户适当的反馈。 最佳答案 OnBegin 是您要找的: usi
我有以下代码,使用 JQUERY 表单插件通过 ajax 在服务器上提交数据: initForm: function() { //submit form functio
我正在重构我对 $.ajax 的使用,以使用 jQuery 表单插件提交表单。 API指出可以将传递给 $.ajax 的任何选项传递给 $.ajaxSubmit。我希望修改 beforeSubmit
我有一个表单,正在使用表单插件中的 jQuery 的 ajaxSubmit 函数提交。我试图在提交之前将表单名称/值对添加到表单数据中。我的计划是修改 beforeSubmit 事件处理程序中的表单数
我正在我的提交按钮上创建一个加载指示器,并使用 registerJs 函数将“开始”过程附加到 beforeSubmit 事件。 第一次可以正常工作,但是重新加载Pjax容器后,再次提交表单时不会触发
我正在使用 Oleg 的免费 jqGrid。在我的表单编辑之后,我尝试包装我的 POST 数据,以便在 PHP 中我得到一个很好的数组,例如: Array( oper => edit, data =>
我有以下代码: $("#forma_mod_uid").livequery( function (){ $("#forma_mod_uid").ajaxForm({
我正在使用 jQuery 表单插件上传图片。我已经分配了淡入淡出动画来发生 beforeSubmit 回调,但由于我在本地运行,它没有时间在调用 success 函数之前完成。 我在 fade();
我想连接所有表单,以便在 Jquery 验证没有发现错误之后和提交表单之前或提交时显示加载器。 这如何使用 MVC 4 非侵入式验证来实现? 我已经按照这篇文章尝试了以下内容,How to add a
我有一个通过 AJAX 动态加载的表单。我尝试在表单上绑定(bind) beforeSubmit ,但随着表单正在提交并且浏览器正在加载新页面,它似乎失败了。当表单在页面中处于静态时,beforeSu
我是一名优秀的程序员,十分优秀!