在jQuery中是否有一种巧妙/简便的方法来识别某些常规ajax事件的标识符?
为了解释,我正在创建一些功能,这些功能分为两个独立的功能部分:模块A和模块B.模块A以及其他一些功能主要负责ajax调用。在模块a完成并且返回了ajax调用之后,模块B负责前端dom工作。
我目前只是为每个ajax函数触发事件:
所以模块有这个代码(以及其他东西):
$.ajax({
url: 'myajaxurl',
beforeSend : function() {
$('#form').trigger('module_a_before_send');
},
success: function(response) {
$('#form').trigger('module_a_success');
},
complete: function() {
$('#form').trigger('module_a_complete');
},
error: function(textStatus) {
$('#form').trigger('module_a_error');
},
timeout: 3000
});
答案 0 :(得分:0)
您可以使用data选项向服务器端发送值以标识ajax调用:
var data = if some event ? attach some value : if not attach other value etc,
elem = $('#form');
$.ajax({
url: 'myajaxurl',
data: data,
beforeSend : function() {
elem.trigger('module_a_before_send');
},
success: function(response) {
elem.trigger('module_a_success');
},
complete: function() {
elem.trigger('module_a_complete');
},
error: function(textStatus) {
elem.trigger('module_a_error');
},
timeout: 3000
});
如何捕获数据取决于所使用的服务器端语言,但对于类似PHP的内容,它将位于$_POST
全局。
答案 1 :(得分:0)
我对这个问题有点困惑。如果您需要模块之间的通信,您可以使用可以传递的额外数据参数来触发(参见http://api.jquery.com/trigger/)
$(elem).trigger('my-custom-event', {id:1})
和相应的事件处理程序
$(elem).bind('my-custom-event', function(event, data) {});
另一种方法是创建自己的自定义事件
var event = $.Event('my-custom-event',{id:1})
$(elem).trigger(event)
以这种方式直接将地图中的属性添加到jQuery事件对象。