Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 终止jqueryajax表单提交_Ruby On Rails 3_Jquery - Fatal编程技术网

Ruby on rails 3 终止jqueryajax表单提交

Ruby on rails 3 终止jqueryajax表单提交,ruby-on-rails-3,jquery,Ruby On Rails 3,Jquery,我可能会连续几次远程提交表单。对于这种特殊情况,去抖动不是一种选择。对于使用.submit()提交的远程表单,我正在寻找jQuery等价的.abort(),以便在提交新表单时可以取消以前提交的所有表单 提前感谢,, Garrett也许您可以使用jQuery对提交进行排队,并在需要时清除队列。只是一个想法…我不理解你的问题。如果表单已提交,将向服务器发送请求。。。那么,你怎么能放弃呢 如果abort的意思是取消响应的处理,那么只需使用一个控制变量来增加/减少,以了解是否存在挂起的请求 从API:您

我可能会连续几次远程提交表单。对于这种特殊情况,去抖动不是一种选择。对于使用
.submit()
提交的远程表单,我正在寻找jQuery等价的
.abort()
,以便在提交新表单时可以取消以前提交的所有表单

提前感谢,,
Garrett

也许您可以使用jQuery对提交进行排队,并在需要时清除队列。只是一个想法…

我不理解你的问题。如果表单已提交,将向服务器发送请求。。。那么,你怎么能放弃呢

如果abort的意思是取消响应的处理,那么只需使用一个控制变量来增加/减少,以了解是否存在挂起的请求


从API:您不能这样做。

我所做的是附加到表单的beforeSend事件,将xhr对象存储为表单数据的一部分,并在新请求排队时中止它:

$('form').bind("ajax:beforeSend", function(evt, xhr) {
  console.log('Enqueued new xhr request');
  var prevXhr = $(this).data('current-xhr');
  if (prevXhr) {
    prevXhr.abort();
    console.log('Aborting previous xhr request');
  }
  $(this).data('current-xhr', xhr);
});

您仍然可以直接使用表单中的
:remote=>true
选项。

是的,我想取消对响应的处理。问题是服务器不一定按照接收请求的顺序发回响应,因此简单的请求计数器不允许我确定哪一个响应是最近的(除非我很傻,没有看到什么)。我可以在请求中包含计数器并在响应中返回它,但如果可能的话,我希望避免服务器端参与。