【问题标题】:ajax:beforeSend getting triggered on any ajax callajax:beforeSend 被任何 ajax 调用触发
【发布时间】:2016-03-15 18:19:43
【问题描述】:

我正在尝试将 ajax:beforeSend、ajax:error 和 ajax:complete 绑定到远程提交的 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.

【问题讨论】:

  • 表单是动态的吗?
  • 是的,它是 Rails 形式

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


【解决方案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();        
    }
});

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

【讨论】:

  • 您好,感谢您的回答,当我发出警报时(event.target.id);在 ajaxBeforesend 中,我看到了一个我没有绑定 ajax 调用的元素的 id。
  • 我有点困惑,这是正确的行为吗?我只针对一个特定的表单,那么如何为其他链接触发之前的发送?
  • 提交按钮的 .on('click') 中是否包裹了 ajax 命令?如果它正在拾取其他元素,那么由于某种原因它没有绑定正确性。请记住,如果您将 beforeSend 绑定到表单,它将接收任何 pre-ajax 调用,甚至是不相关的调用
  • 不,它没有绑定在 onclick 上,但这令人惊讶,即使我在发送之前绑定 ajax 以形成它选择其他元素,这是写在文档中的某个地方还是一个错误在jQuery中。你能指点我一些相同的文件吗,非常感谢。
  • 不,据我所知,这不是 jquery 中的错误,但您可能正在处理后台发生的事情。我建议只绑定到提交按钮的 onclick,以便它在您要发布/操作的表单的上下文中运行
猜你喜欢
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多