2012-05-25 145 views
2

我一直在本地開發應用程序,並在實際服務器上遇到麻煩。jQuery AJAX請求錯誤狀態0

每當我提交一個AJAX請求與jQuery它給我一個錯誤,錯誤status:0和和statusText: 'error'

Chrome檢查器甚至沒有顯示請求的響應代碼,它只是說失敗。

當我仔細檢查它時,我注意到所有數據都已發送並且PHP文件實際處理了它。例如,在下面的請求中,用戶確實已創建。錯誤的響應代碼阻止了其他請求的執行(因爲它們依賴於「成功」響應)。

下面是一個示例請求:

var cct = $.cookie('ttc_csrf_cookie'); // csrf protection 
var sUrl = "<?= base_url(); ?>user/create/"; 
var serialized = { 
    name: me.name, 
    email: me.email, 
    oauth_provider: 'facebook', 
    oauth_uid: me.id, 
    ttc_csrf_token: cct 
}; 
$.ajax({ 
    url: sUrl, 
    type: "POST", 
    data: serialized, 
    error: function(someStuffHere) { 
      //* THIS CODE RUNS. SHOWS ERROR STATUS: 0 */ 
    }, 
    success: function(user_id) { 
     //******** THIS HERE NEVER RUNS ***********///  
    } 
}); 

這裏是相應的PHP代碼:

public function create() { 
    if($this->input->post()) { 
     $user['name'] = $this->input->post('name'); 
     $user['email'] = $this->input->post('email'); 
     $user['oauth_provider'] = $this->input->post('oauth_provider'); 
     $user['oauth_uid'] = $this->input->post('oauth_uid'); 
     $user['last_activity'] = date('Y-m-d H:i:s'); 

     $user_id = $this->Users->create_user($user); 
     $this->session->set_userdata('user_id', $user_id); 
     echo $user_id; 
    } 
} 

這兩個片段是僅是示例。所有AJAX請求都不能在現場服務器上運行。

它可能是什麼?謝謝!

更新:我縮小了範圍,並且在回顯結果時出現問題。當我註釋掉回顯時,不會拋出任何錯誤(但是,當然,不會發送任何結果)。

+0

只是暫時從ajax調用中刪除錯誤字段,並查看console.log中會發生什麼......錯誤將清晰到足以給您提供信息...... –

+0

域是一樣的嗎?如果您正在訪問來自不同域的webservice,則必須在$ .ajax – dhinesh

+0

中設置crossDomain:true所以我縮小了範圍,並且在回顯結果時出現問題。當我註釋掉回顯時,不會拋出任何錯誤(但是,當然,不會發送任何結果)。 –

回答

1

原來,問題是由CodeIgniter中的compress_output選項引起的。當它設置爲true時,echo不起作用。感謝所有嘗試提供幫助的人!