【问题标题】:ajax request finishes after redirectajax 请求在重定向后完成
【发布时间】:2012-12-13 22:29:08
【问题描述】:

我的ajax请愿有问题,我有如下功能

function do_ajax (params, url, callback) {
    $.ajax({
        url: url,
        type: 'post',
        data: params,
        success: function (response){
            try{
                var obj = $.parseJSON(response);
                callback(obj);
            }catch(e){
                alert('Cannot connect');
            }
        },
        error: function (jqXHR, textStatus, errorThrown){
            alert('err');
            console.log(jqXHR)
            console.log(textStatus)
            console.log(errorThrown)
        }
    });
}

我叫它

function verificar_atenciones_paciente (p) {
    progress();
    do_ajax('', '<?php echo base_url(); ?>index.php/some/where/'+p.id, callback);
}

function callback (obj) {
    var table = $('#table tbody')
    var t = false;
    table.empty();
    if (0 == obj.length){ return; }
    $(obj).each(function (key, value){
        if (value.f){
            tiene = true;
        }else{
            alert('Redirect');
            window.location.href = '<?php echo base_url(); ?>index.php/some/where_else/'+value.id;
            return;
        }
        var tr = to_row(value);
        table.append(tr)
    })
    if (tiene_fac){
        alert("Found!");
    }else{
        alert("Not Found!")
    }
    $('#list').fadeIn();
    done();
}

我的问题是在调用重定向 (window.location.href = '&lt;?php echo base_url(); ?&gt;index.php/some/where_else/'+value.id;) 时出现它在后台执行一些 ajax 并显示 ajax 请求 (alert('Cannot connect');) 的错误。

我使用 PHP、Code Igniter、JQuery。

提前致谢

【问题讨论】:

  • 您正在接受异常。 e 是什么?
  • |[Exception... "prompt aborted by user" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: resource:///components/nsPrompter.js :: openTabPrompt :: line 425" data: no]

标签: php javascript codeigniter


【解决方案1】:

你可以试试设置

async: false 

在您的 ajax 请求中,这将导致它一直保持到请求完成。

【讨论】:

    【解决方案2】:

    ajax 请求绑定到行表中的单击事件。没有发布表单 (onsubmit="return false;")。我使用 setTimeOut 处理它,并在两秒钟后调用重定向以让 ajax 后链完成。我想问题是ajax请求被突然中断了,所以它抛出了一个异常。由于它延迟了请求,它让正常完成 ajax 请求,然后再进行重定向。我很想有一些其他的建议.. 感谢您的帮助。

    【讨论】:

      【解决方案3】:

      此页面是否返回 JSON?

      <?php echo base_url(); ?>index.php/some/where/'+p.id
      

      如果不是,parseJSON 可能会抛出异常。尝试返回一些 JSON

      echo '{"f":{"test":1},"test2":1}';
      

      应该可以解决问题。

      我还将alert() 更改为console.log(),因为这样可以更轻松地使用开发人员工具查看进度。

      【讨论】:

      • 它确实返回 JSON,异常在问题的评论中。问题在于重定向,因为没有它,它工作得很好..
      • check stackoverflow.com/q/5545577/183254 看起来js处理表单的方式可能有错误
      • 实际上没有表格。我想问题在于 ajax 请求中止。
      猜你喜欢
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      • 2014-05-19
      • 1970-01-01
      • 2014-08-22
      • 1970-01-01
      相关资源
      最近更新 更多