我很困惑为什么codeigniter不会让我使用它:
$(function() {
var csrf = $.cookie("<?php echo $this->config->item('csrf_cookie_name'); ?>"),
csrfToken = "<?php echo $this->security->get_csrf_token_name(); ?>";
$('.notificationBoxClose').click(function() {
var url = $(this).attr('href');
$.post(url, {csrfToken: csrf}, function() {
$('#notification').fadeOut('slow', function() {$this.remove()});
});
return false;
});
});
当我像这样完全相同的代码时,它可以正常工作:
$(function() {
var csrf = $.cookie("<?php echo $this->config->item('csrf_cookie_name'); ?>");
$('.notificationBoxClose').click(function() {
var url = $(this).attr('href');
$.post(url, {<?php echo $this->security->get_csrf_token_name(); ?>: csrf}, function() {
$('#notification').fadeOut('slow', function() {$this.remove()});
});
return false;
});
});
为什么我不能使用security-&gt; get_csrf_token_name(); ?&GT;变成一个变量?
答案 0 :(得分:3)
因为您不能将变量用作对象键。您需要像这样插入:
$(function() {
var postData = {};
var csrfToken = "<?php echo $this->security->get_csrf_token_name(); ?>";
postData[csrfToken] = $.cookie("<?php echo $this->config->item('csrf_cookie_name'); ?>"),
$('.notificationBoxClose').click(function() {
var url = $(this).attr('href');
$.post(url, postData, function() {
$('#notification').fadeOut('slow', function() {$this.remove()});
});
return false;
});
});