CodeIgniter + AJAX内部错误500

时间:2012-04-12 20:41:48

标签: php ajax codeigniter

我正在尝试对Notification控制器中的一个方法进行ajax调用。

我的方法是:

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请求。

当我向ajax添加一些数据时,例如:data:“nome = Gerep”,然后调用它,我会收到Internal Erro 500

当我不发送任何数据时,它会起作用,它在提交时返回 form ,当我调用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

3 个答案:

答案 0 :(得分:1)

不确定您是如何设法使用CRSF保护来破坏服务器的,但是如果您需要在域之间共享内容CORS是您需要的解决方案。只需在您的Web服务器上定义Origin策略,就可以了。

答案 1 :(得分:0)

您是在传递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);
      }
    });

答案 2 :(得分:0)

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