Javascript Codeigniter AJAX JQuery csrf_保护星级脚本

Javascript Codeigniter AJAX JQuery csrf_保护星级脚本,javascript,php,jquery,ajax,codeigniter,Javascript,Php,Jquery,Ajax,Codeigniter,我使用的是星级脚本,但我使用的是启用了CSRF\u保护的Codeigniter。当我点击星号并调用脚本时,我收到500内部服务器错误。我在这里找到了一些类似的帖子,但没有一个能帮助我解决我的问题 我尝试了一个我在网上找到的修复程序,该程序声明首先创建ajaxSetup(见下文)函数,将“数据”与我函数中的数据合并以发送令牌 我不懂JavaScript,所以我花了好几天的时间来解决这个问题。Ajax安装程序不工作。如果我关闭CRSF_保护,脚本就会工作 救命啊!请告诉我,我对这一点很感兴趣,希望它

我使用的是星级脚本,但我使用的是启用了
CSRF\u保护的Codeigniter。当我点击星号并调用脚本时,我收到
500内部服务器错误
。我在这里找到了一些类似的帖子,但没有一个能帮助我解决我的问题

我尝试了一个我在网上找到的修复程序,该程序声明首先创建ajaxSetup(见下文)函数,将“数据”与我函数中的数据合并以发送令牌

我不懂JavaScript,所以我花了好几天的时间来解决这个问题。Ajax安装程序不工作。如果我关闭CRSF_保护,脚本就会工作

救命啊!请告诉我,我对这一点很感兴趣,希望它能够正常工作,因为我还想使用其他Jquery脚本

$.ajaxSetup({
data: { <?php echo $this->config->item('csrf_token_name'); ?>:
$.cookie('<?php echo $this->config->item('csrf_cookie_name'); ?>') 
}
});
$.ajaxSetup({
数据:{:
$.cookie(“”)
}
});
下面是所有Java脚本

<script type="text/javascript">
        $.ajaxSetup({
            data: {
            <?php echo $this->config->item('csrf_token_name'); ?>: $.cookie('<?php echo $this->config->item('csrf_cookie_name'); ?>') 
            }
        });

            $(function() {
                $("#rating_star").codexworld_rating_widget({
                    starLength: '5',
                    initialValue: $('#rating_star').val(),
                    callbackFunctionName: 'processRating',
                    imageDirectory: '<?php echo base_url(); ?>i/icon',
                    inputAttr: 'postID'
                }); 
            });

            function processRating(val, attrVal){
                $.ajax({
                    type: 'POST',
                    url: '<?php echo base_url(); ?>rating/rate',
                    data: 'postID='+attrVal+'&ratingPoints='+val,
                    dataType: 'json',
                    success : function(data) {
                        if (data.status == 'ok') {
                            $('#avgrat').text(data.average_rating);
                            $('#totalrat').text(data.rating_number);
                        }else{
                            alert('Some problem occured, please try again.');
                        }
                    }
                });
            }

    </script>

$.ajaxSetup({
数据:{
:$.cookie(“”)
}
});
$(函数(){
$(“#评级明星”).codexworld_评级小部件({
星长:'5',
初始值:$(“#额定值_星”).val(),
callbackFunctionName:'processRating',
imageDirectory:'i/图标',
InputTR:“posted”
}); 
});
函数processRating(val,attrVal){
$.ajax({
键入:“POST”,
url:“评级/费率”,
数据:“postID=”+attrVal+”&评级点=”+val,
数据类型:“json”,
成功:功能(数据){
如果(data.status=='ok'){
$('avgrat')。文本(数据。平均评分);
$('totalrat').text(数据、评级编号);
}否则{
警报('出现问题,请重试');
}
}
});
}

在最初加载页面时激发的javascript中,设置如下:

$.ajaxSetup({headers:{'X-CSRF-TOKEN':'''}})


'X-CSRF-TOKEN'
可能会有所不同,这取决于您是否更改了该名称等。

您在此处为数据设置了默认值

$.ajaxSetup()

你在这里超越了它

 $.ajax();
所以令牌的值并没有发送到您的服务器,也并没有将数据作为JSON发送,只是您需要将其与数据一起发送

data:{"<?=$csrf['name'];?>":"<?=$csrf['hash'];?>"}

您是否已签入服务器上的日志,内部服务器错误实际上是什么?这始终是一个好主意,如果出现“内部服务器错误”,您是否真的需要csrf(在帖子上)直接命中星计数器?避免伤害值得付出努力吗?呜呜呜!成功了。谢谢这就是我想做的。我以前尝试过这个方法,但是我一直收到一个错误,说我缺少一个冒号。调用成功,数据库正确更新,使用Firebug我可以看到响应是正确的,但屏幕值没有更新,但我想我可以找到答案。再次感谢。
data:{"<?=$csrf['name'];?>":"<?=$csrf['hash'];?>", "postID":attrVal, "ratingPoints":val}