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

时间:2013-10-13 22:53:07

标签: ajax jquery

很抱歉提出这样一个基本问题。我想在我的输入页面添加一个Ajax功能:

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

    但是,情况是:弹出消息窗口仅显示一秒钟,然后在一两分钟后浏览器转到batchoutput.html。我的猜测是我的ajax功能有问题。似乎ajaxstartajaxstop失误了。我可以提一些建议吗?

    以下是代码:

    $('.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';
            }
        });
    
    });
    

1 个答案:

答案 0 :(得分:1)

在ajax请求完成后立即触发

ajaxStop完成表示错误成功。

因此,单击按钮后会发生以下情况:

  • ajaxStart被触发,导致UI阻止
  • 执行/batchoutput.html的ajax请求
  • 如果请求失败,则会触发ajaxStop,导致用户界面取消阻止

我的建议是:

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