我有一些看起来像这样的代码(缩短了):
$.ajax({
url: $form.attr('action'),
data: formData,
type: $form.find('input[name=_method]').val() || $form.attr('method') || 'POST'
}).done(function (data, textStatus, $xhr) {
var eventParams = {
xhr: $xhr,
validator: validator
};
$form.trigger($.Event('ajaxify-success',eventParams));
});
我这样用:
$('#label-form').on('ajaxify-success', function(ev) {
console.log(ev);
});
但ev.data
总是undefined
。如果我修改eventParams
以重新输入数据:
var eventParams = {
xhr: $xhr,
validator: validator,
data: data
};
仍然不起作用。 jQuery正在做一些事情来主动删除数据。为什么?我基本上想要传播ajax done事件并添加一些我自己的额外属性。如何在不丢失data
的情况下做到这一点?
答案 0 :(得分:3)
您不能将data
用作jQuery为Event.data保留的任意事件参数。
请参阅Fiddle
答案 1 :(得分:2)
然后根据上一个答案,您不能使用'数据'...更改变量名称,您就可以了。请参阅以下代码段:
var eventParams = {
xhr: 'myXHR',
validator: 'myValidator',
mydata: 'myData'
};
$('#label-form').on('ajaxify-success', function(ev) {
console.log(ev);
});
$('#label-form').trigger(jQuery.Event( 'ajaxify-success', eventParams ));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<form id="label-form">form</form>