用 ajax:beforeSend 修改后继续执行 ajax 请求

Posted

技术标签:

【中文标题】用 ajax:beforeSend 修改后继续执行 ajax 请求【英文标题】:Continue execution of ajax request after altering with ajax:beforeSend 【发布时间】:2015-02-23 17:33:07 【问题描述】:

在我的 rails 应用程序中使用 jquery_ujs 处理 ajax 表单。我通过调用 ajax:beforeSend 事件更改了要使用 remote: true 发送的表单。如果在我使用 sweetalert 时确认操作执行,我想让它继续执行。

$('.content>.fr span:last-of-type>a').on "ajax:beforeSend", (xhr, settings) ->
        swal
          title: "Are you sure?"
          text: "You will not be able to undo this!"
          type: "warning"
          showCancelButton: true
          confirmButtonColor: "#DD6B55"
          confirmButtonText: "Yes, delete it!"
          closeOnConfirm: false
        , ->
          # should send the request here
          swal "Deleted!", "Department has been deleted.", "success"
          return

要查看它的完整版本,请访问this gist。

【问题讨论】:

【参考方案1】:

你应该喜欢这个

$("body").on("click", "#element", function(e)            
             swal(
                title: "Are you sure?",
                text: "Are you sure?",
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "Yes, delete it!",
                closeOnConfirm: false ,
                function()
                   // ajax goes here
                       
            );
        );

SweetAlert 与 javascript confirm 不同,脚本执行在等待用户输入时不会停止,因此如果 beforeSend 中的函数没有返回 false,则 ajax 会继续处理请求。

【讨论】:

现在在我的第二个 Rails 项目中,我什至从未尝试过 ajax,因为我一直在使用 Rails 进行开发。我只使用 UJS `remote: true`

以上是关于用 ajax:beforeSend 修改后继续执行 ajax 请求的主要内容,如果未能解决你的问题,请参考以下文章

巧用Ajax的beforeSend 提高用户体验

巧用Ajax的beforeSend 提高用户体验

巧用Ajax的beforeSend 提高用户体验

巧用Ajax的beforeSend 提高用户体验

巧用Ajax的beforeSend 提高用户体验

巧用Ajax的beforeSend 提高用户体验