ajax:beforeSend在任何ajax调用上被触发

时间:2016-03-15 18:19:43

标签: javascript jquery ajax ruby-on-rails-3 jquery-ui

我正在尝试bing ajax:beforeSend,ajax:error和ajax:完成我的rails表单,它会被远程提交。

我尝试使用委托,绑定,直播等但我仍然面临同样的问题。

$('form#contact_form').bind('ajax:beforeSend', function(evt, xhr, settings) {
  //getItemIds(); added this call on button click
  call();
})
.bind('ajax:error', function(event, request, settings) {
  text();
})
.bind('ajax:complete', function(event, request, settings) {
  phone();
});

我在页面上还有其他锚点链接,它们也会进行ajax调用,但是对于任何ajax调用都会调用“beforesend”函数。我想只为那个特定的表格打电话。

当我做警报时(event.target.id);在ajaxBeforesend里面,我看到了一个我没有绑定ajax调用的元素id

I am targeting only a specific form so how that before send be triggered for other links? Can anyone tell what is that i am doing wrong, Thanks.

NOTE: When i commented out the jquery_ui.js this behaviour stopped happening. Is is some conflict issue, Please help.

1 个答案:

答案 0 :(得分:1)

您正在将您的表单绑定到可能发生的任何ajax调用,这意味着如果后台的其他内容可能正在使用ajax,则会触发您的调用,而不仅仅是针对您打算捕获的表单。

防止任何事情运行形式特定绑定的最好方法是,按下按钮(你没有包含的东西,但我假设你在表单上有一个按钮,操作提交)在按钮上执行此操作单击而不绑定到表单:

$.ajax({
    type: 'POST',
    url: url,
    data: data,
    beforeSend: function() {
        call();
    },
    success: function(data) {
        //something
    },
    error: function(xhr) { // if error occured
        text();
    },
    complete: function() { 
        phone();        
    }
});

如果这没有帮助,请更新您的原始帖子以获取更多信息。我真诚地希望这会有所帮助。