1

我正在尝试对通知控制器中的一种方法进行 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

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

3 回答 3

1

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

于 2012-04-12T23:12:46.850 回答
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);
      }
    });
于 2012-04-12T20:48:29.870 回答
0

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

于 2012-05-18T11:53:06.660 回答