Codeigniter CSRF Выпуск Jquery - PullRequest
       0

Codeigniter CSRF Выпуск Jquery

0 голосов
/ 03 апреля 2012

Я запутался, почему 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-> get_csrf_token_name (); ?> в переменную?

1 Ответ

3 голосов
/ 03 апреля 2012

Потому что вы не можете использовать переменные в качестве ключей объекта.Вы должны вставить это так:

$(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;
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...