0

我的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 = '<?php echo base_url(); ?>index.php/some/where_else/'+value.id;调用重定向 () 时出现它在后台执行一些 ajax 并显示 ajax 请求 ( alert('Cannot connect');) 的错误。

我使用 PHP、Code Igniter、JQuery。

提前致谢

4

3 回答 3

0

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

于 2012-12-28T19:38:21.750 回答
0

您可以尝试设置

async: false 

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

于 2012-12-29T17:09:38.777 回答
0

此页面是否返回 JSON?

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

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

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

应该做的伎俩。

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

于 2012-12-28T18:17:55.610 回答