CodeIgniter + AJAX内部错误500

CodeIgniter + AJAX内部错误500

问题描述:

我想在我的Notification控制器中对一个方法进行ajax调用。CodeIgniter + AJAX内部错误500

我的方法是:

public function testeAjax() 
{ 
    if($this->chamadaAjax()) 
     echo 'Ajax'; 
    else 
     echo 'Form'; 
} 

$this->chamadaAjax()简单地执行和$this->input->is_ajax_request()

,这是我的Ajax调用:

$.ajax({ 
     type: "POST", 
     url: '<?php echo base_url(); ?>/office/notificacao/testeAjax', 
     success: function(html) { 
     alert(html); 
     } 
    }); 

我有两个按钮,一个用于表格形式提交和另一个阿贾克斯请求。

的事情是,当我的一些数据添加到AJAX,如:数据:“诺姆= Gerep”,并调用它,我收到一个Internal Erro 500

当我不发送任何数据,它的工作原理,它会在我提交时返回表格,当我调用ajax请求时返回ajax

任何想法?

编辑 使用Firebug这里是我得到:

f.support.ajax.f.ajaxTransport.sendjquery-1.7.1.min.js:4 
f.extend.ajaxjquery-1.7.1.min.js:4 
testenotificacao:140 
(anonymous function)notificacao:113 
onclick 
+0

你检查了你的服务器日志吗?如果你有权访问它们,查明真实原因最安全的方法就是检查它们 - HTTP/1.1 500记录的原因是什么。 – brezanac 2012-04-12 20:55:10

+0

我在哪里可以找到这些日志? – Gerep 2012-04-12 22:48:20

+0

只有使用专用或VPS机器时,才能访问错误日志。在共享虚拟主机服务器上,错误日志通常不可用(只是访问日志)。在哪里寻找它取决于运行Web服务器的发行版(OS)。 RedHat在'/ etc/httpd/logs/error_log'中派生它。 – brezanac 2012-04-12 23:36:34

问题出在Cross Site Request Forgery,禁用它解决了问题。

你传递数据的URL或定义对象?即:数据传递(尤其是POST)应该是这个样子:

$.ajax({ 
     type: "POST", 
     url: '<?php echo base_url(); ?>/office/notificacao/testeAjax', 
     data: { nome: "Gerep" }, 
     success: function(html) { 
     alert(html); 
     } 
    }); 

,而不是像这样:

$.ajax({ 
     type: "POST", 
     url: '<?php echo base_url(); ?>/office/notificacao/testeAjax?nome=Gerep', 
     success: function(html) { 
     alert(html); 
     } 
    }); 
+0

我我试过了,同样的错误 – Gerep 2012-04-12 20:51:03

不知道如何管理一个CRSF保护,但万一打坏服务器您需要共享域名之间的内容CORS是您需要的解决方案。只需在您的Web服务器上定义Origin策略,您就可以轻松前往。