2012-05-25 82 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不起作用。感谢所有尝试提供帮助的人!