小铅笔 发表于 2012-3-19 15:57:09

一个ajax请求的问题,请高手帮忙看看!

本帖最后由 小铅笔 于 2012-3-19 18:05 编辑

一个很奇怪的问题
这个是控制器的代码,非常简单
<?php
class int extends CI_Controller
{
    function __construct()
    {
      parent::__construct();
    }

    public function index()
    {
      $data['title']=$_POST['user'];
      echo $this->load->view('pages/loadajax',$data,TRUE);

    }

}


这个是JQUERY的代码
$(document).ready(function(){
    $('#load').click(function(){
      $.post('index.php/int',{‘user’:'TEST WORD'},function(data){$(data).insertAfter('#load');})
    })
})


那么现在有一个问题很怪。就是用$.post的时候如果加上输出参数{‘user’:'TEST WORD'}。就不能正确显示。如果把输入参数去掉。然后在控制器里面把$data['title']=$_POST['user'];改为一个字符串。比如$data['title']='TEST WORD';那么就可以正常的显示。
请问是我哪里代码不正确吗?




Hex 发表于 2012-3-19 17:48:24

看起来没问题,你用 firebug 看看请求是如何发送的。

小铅笔 发表于 2012-3-19 18:17:25

用firebug提示这个错误。不知道原因出在哪了

500 Internal Server Error


The action you have requested is not allowed.

huboo82 发表于 2012-3-20 08:51:48

好像是csrf开启了?

小铅笔 发表于 2012-3-20 10:03:44

谢谢。的确是CSRF的问题。我全局开启了。下面这篇文章讲了如何在全局开启CSRF情况下设置 AJAX

http://blog.hsin.tw/2011/codeigniter-csrf-protection-form-ajax/

大道达人 发表于 2012-3-20 10:46:27

小铅笔 发表于 2012-3-20 10:03 static/image/common/back.gif
谢谢。的确是CSRF的问题。我全局开启了。下面这篇文章讲了如何在全局开启CSRF情况下设置 AJAX

http://blog ...

你用 helper form_open创建form的话,会自动添加一行token行

yuzhigang5460 发表于 2012-3-20 13:18:12

本帖最后由 yuzhigang5460 于 2012-3-20 13:29 编辑

小铅笔 发表于 2012-3-20 10:03 static/image/common/back.gif
谢谢。的确是CSRF的问题。我全局开启了。下面这篇文章讲了如何在全局开启CSRF情况下设置 AJAX

http://blog ...
我关闭了CSRF,问题仍然不能重现。
我post过去的数据能正常显示。

——————
理解错误,原来是开启了才会出现问题。

zhengfeity 发表于 2012-3-20 13:59:37

$.post('index.php/int'这建议写绝对路径
$.post('<?php echo base_url();?>index.php/int'
或者<?php echo site_url('int');?>

csrf 开启也没事{‘user’:'TEST WORD',‘csrf名称:’$('#csrfid').val()}

yuzhigang5460 发表于 2012-3-20 19:17:25

zhengfeity 发表于 2012-3-20 13:59 static/image/common/back.gif
$.post('index.php/int'这建议写绝对路径
$.post('index.php/int'
或者


我测试过了,开启以后的确会出现楼主那样的情况,即便是使用绝对路径。

zhengfeity 发表于 2012-3-22 13:41:05

$("#sheng").live("change",function(){
          $.post('http://xxxx/index.php/user/tender/region.html',{csrf_test_name:$("").val(),sheng:$(this).val()},
                  function(data)
                {
                        $('#shi').html('aaaaa');
                });
          
});
页: [1]
查看完整版本: 一个ajax请求的问题,请高手帮忙看看!