[英]Codeigniter AJAX JQuery csrf_protection star rating script
我在这里使用星级评定脚本,但在CSRF_PROTECTION
使用。 单击星标并调用脚本时,我收到500 Internal Server Error
。 我在这里找到了一些类似的帖子,但没有一个可以帮助我解决问题。
我尝试了一个在线发现的修复程序,该修复程序声明先创建ajaxSetup(请参见下文)函数,以将“数据”与函数中的数据合并以发送令牌。
我不了解JavaScript,因此花了我几天时间才能解决问题。 ajaxSetup无法正常工作。 如果我关闭CRSF_PROTECTION,该脚本将起作用。
救命! 拜托,我对此感到震惊,并希望使其正常工作,因为还有其他我想使用的Jquery脚本。
$.ajaxSetup({
data: { <?php echo $this->config->item('csrf_token_name'); ?>:
$.cookie('<?php echo $this->config->item('csrf_cookie_name'); ?>')
}
});
这是所有的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>
在页面最初加载时触发的javascript中,设置如下:
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN' : '<?php echo $token; ?>' } });
'X-CSRF-TOKEN'
可能会有所不同,具体取决于您是否更改了该名称等。
您在此处设置数据的默认值
$.ajaxSetup();
而你在这里覆盖它
$.ajax();
因此令牌的值不会发送到服务器,也没有将数据作为JSON发送,而只需要与数据一起发送
data:{"<?=$csrf['name'];?>":"<?=$csrf['hash'];?>"}
您需要以json格式发送数据
data: 'postID='+attrVal+'&ratingPoints='+val,
至
data:{"<?=$csrf['name'];?>":"<?=$csrf['hash'];?>", "postID":attrVal, "ratingPoints":val}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.