Ajax检查Url是否存在,然后重定向

Ajax检查Url是否存在,然后重定向,ajax,jquery,Ajax,Jquery,很抱歉问这么一个基本的问题。我想在我的输入页面中添加一个Ajax功能,它可以: 使用blockUI插件添加一个弹出窗口,告诉用户等待 同时ajax检测输出页面的存在 如果计算完成,ajax会将浏览器重定向到输出页面(batchoutput.html) 如果一切顺利,弹出消息将出现约1-2分钟,直到计算完成,然后浏览器将重定向到batchoutput.html页面 但是,情况是:弹出消息窗口仅出现一秒钟,然后在一两分钟后,浏览器转到batchoutput.html。我猜我的ajax函数有问题。似乎

很抱歉问这么一个基本的问题。我想在我的输入页面中添加一个Ajax功能,它可以:

  • 使用
    blockUI
    插件添加一个弹出窗口,告诉用户等待
  • 同时ajax检测输出页面的存在
  • 如果计算完成,ajax会将浏览器重定向到输出页面(
    batchoutput.html
  • 如果一切顺利,弹出消息将出现约1-2分钟,直到计算完成,然后浏览器将重定向到
    batchoutput.html
    页面

    但是,情况是:弹出消息窗口仅出现一秒钟,然后在一两分钟后,浏览器转到
    batchoutput.html
    。我猜我的ajax函数有问题。似乎
    ajaxstart
    ajaxstop
    没有点火。我能有一些建议吗

    代码如下:

    $('.input1_button').click(function () {
        $(document).ajaxStart(function(){
            $.blockUI({ css: { 
                border: 'none', 
                padding: '15px', 
                backgroundColor: '#000', 
                '-webkit-border-radius': '10px', 
                '-moz-border-radius': '10px', 
                opacity: .5, 
                color: '#fff' 
            } }); 
        });
        $(document).ajaxStop(function(){
            $.unblockUI();
        });
    
        $.ajax({
            type: "post",
            url: "/batchoutput.html",
            data: $(".articles").serialize(),
            dataType: "html",
           success: function() {
                window.location = '/batchoutput.html';
            }
        });
    
    });
    

    ajaxStop
    在ajax请求完成后立即触发,完成意味着错误或成功

    因此,单击按钮后发生的情况是:

    • ajaxStart
      被激发,导致UI阻塞
    • 执行对
      /batchoutput.html
      的ajax请求
    • 如果请求失败,
      ajaxStop
      将被激发,导致用户界面解锁
    我的建议是:

    • 单击按钮时阻止UI(即将
      $.blockUI
      直接移动到
      单击功能中)
    • 在此之后,反复发送ajax请求,直到成功完成(您可以使用Javascript的本机函数
      setInterval
      ,或者在
      ajaxError
      上触发下一个请求)
    • 请求成功时,取消阻止UI并重定向(可以直接在
      success
      回调中或在
      ajaxSuccess
      方法中完成)

    谢谢你,迈克尔。我认为删除ajaxstop并将解锁UI移动到成功工作中!