jQuery AJAX请求错误状态为0

我一直在本地开发应用程序,并在实际服务器上遇到麻烦。

每当我用jQuery提交一个AJAX请求时,它会给我提供一个错误,其中包含错误 status:0 和and 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请求都不能在现场服务器上运行。

它可能是什么?谢谢!

UPDATE: I've narrowed it down and the issue occurs when echo'ing a result. When I comment out the echo, no error is thrown (but, of course, no result is sent).

2
额外 编辑
意见: 1
所以我缩小了范围,并且在回应结果时出现问题。当我注释掉回显时,不会抛出任何错误(但是,当然,不会发送任何结果)。
额外 作者 Daniel O'Connor,
你的意思是一个输入按钮?空无一人。服务器正在接收数据,但是它会在返回结果时抛出错误(即使您只是执行 echo trueecho json_encode(true))。
额外 作者 Daniel O'Connor,
域名是否相同?如果您正在访问来自不同域的webservice,则必须在$ .ajax中创建crossDomain:true
额外 作者 dhinesh,
你的提交按钮是什么类型的?
额外 作者 dezso,
只是暂时从ajax调用中移除错误字段并查看console.log中会发生什么......错误将足够清晰,以便为您提供信息......
额外 作者 Ankur Verma,

1 答案

原来,问题是由CodeIgniter中的 compress_output 选项造成的。当它被设置为true时, echo 不起作用。感谢所有尝试提供帮助的人!

1
额外