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}