如何使用 Rails UJS 设置超时



我正在使用Rails 5.2.2,我想在使用Rails UJS时设置超时,以便在请求超时时显示警报消息。

我阅读了使用 JavaScript 的官方指南以及与此问题相关的答案,但该指南没有写任何关于超时的内容,并且答案已经过时。

在我的.html.erb视图文件中,我正在使用:

<input id="element_dom_id" type="checkbox" data-remote="true" data-url="/a_url" data-params="key=value" data-method="patch">
<script type="text/javascript">
  document.getElementById('element_dom_id').addEventListener(
    'ajax:success', function(event) {
      ...
    }
  );
  document.getElementById('element_dom_id').addEventListener(
    'ajax:error', function(event) {
      ...
    }
  );
  ...
</script>

试试这个:

$(function() {
    // ...
    $.rails.ajax = function(options) {
      if (!options.timeout) {
        options.timeout = 100000;
      }      
      return $.ajax(options);
    };
    // ...
});

您可以使用 jquery-ujs 中的 $.rails.ajax 属性,以便在未显式传递超时时注入超时。

最新更新