2012-12-28 67 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請求

,這將導致直到請求完成其托起。