2012-12-28 60 views
0

我有一个ajax上访的问题,我有一个函数如下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

你在吞咽异常。什么是'e'? – SLaks

+0

'| [异常...]提示由用户中止“nsresult:”0x80040111(NS_ERROR_NOT_AVAILABLE)“位置:”JS frame :: resource:///components/nsPrompter.js :: openTabPrompt :: line 425“data:no ]' – jaxkodex

回答

0

此页面是否返回JSON?

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

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

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

应该做的伎俩。

我也会将alert()的更改为console.log(),因为它可以更容易地使用开发人员工具观察进度。

+0

它确实返回JSON,异常在问题中注释。问题是与重定向,因为出来它,它工作得很好.. – jaxkodex

+0

检查http://stackoverflow.com/q/5545577/183254看起来像这可能是一个错误的方式,JS是处理表格 – stormdrain

+0

那里实际上是没有形式的。我想问题是与Ajax请求中止。 – jaxkodex

0

ajax请求绑定到行表中的单击事件。没有发布表单(onsubmit="return false;")。我使用setTimeOut在周围工作,并在两秒钟后调用重定向,让ajax后链完成。我猜问题是,ajax请求被abrubtally中断,所以它会引发异常。由于它延迟了请求,它会正常完成ajax请求并稍后进行重定向。我很乐意提供其他建议。 感谢您的帮助。

0

您可以尝试设置

async: false 
在Ajax请求

,这将导致直到请求完成其托起。