我有一个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。
提前致谢
答案 0 :(得分:0)
此页面是否返回JSON?
<?php echo base_url(); ?>index.php/some/where/'+p.id
如果不是,parseJSON
可能会抛出异常。尝试返回一些JSON
echo '{"f":{"test":1},"test2":1}';
应该做的伎俩。
我还会将alert()
更改为console.log()
,因为它可以更轻松地使用开发人员工具观看进度。
答案 1 :(得分:0)
ajax请求绑定到行表中的click事件。没有发布任何表单(onsubmit="return false;"
)。我使用setTimeOut在arround上工作,并在两秒后调用重定向以让ajax post链完成。我想问题是ajax请求被abrubtally中断所以它抛出异常。由于它延迟了请求,它让我们正常完成ajax请求,然后再进行重定向。我很想得到一些其他的建议..
谢谢你的帮助。
答案 2 :(得分:0)
您可以尝试设置
async: false
在你的ajax请求中,这将导致它在请求完成之前保持不变。