我在一个页面上有多个表单,我通过像这样的
Ajaxform插件提交它们<td> <form> form1 </form> </td>
<td> <form> form2 </form> </td>
var options = {
target: '.ajaxMessage',
dataType: 'json', // pre-submit callback
success: function(data, statusText, xhr, form){ myResponse(data,form)},
context: { element: this},
cache: false,
delegation: true,
type: 'POST' };
$(".rform").ajaxForm(options);
在mY AjaxSetup中,我有这个
beforeSend:function(xhr, settings){
$this = settings.context.element;
alert($this);
但它不起作用,警告说窗口对象
答案 0 :(得分:3)
创建选项时,“this”指的是窗口。
不确定您希望this
在beforeSend
中引用什么,但将它设置为jQuery引用可能最简单......就像这样:
<form id="form1">...</form>
<form id="form2">...</form>
和您的上下文对象:
context: { element: $('#form2') },
评论后更新
我知道了。这不是很优雅,但您可以使用插件的beforeSubmit
回调来设置表单的全局变量(传递给该回调),然后在beforeSend
回调中访问该变量。
将代码置于beforeSubmit
回调中可能更好。
(这一切都假设您正在使用this ajaxForm plugin。)
更新了示例:
var options = {
...
beforeSubmit: function(arr, $form, options) {
// save the form somewhere we can get it later:
$.MyActiveForm = $form;
}
现在,在您的onSend功能中,您可以访问$.MyActiveForm
但是,我仍然认为你最好只在onSend
函数中做beforeSubmit
函数中的任何事情,除非你需要在那个特定点进行干预。