JavaScript方括号作为可变值

问题描述 投票:0回答:3

为了CSRF的目的,我需要使用[tokenName]将变量值作为名称传递给下面的函数。它适用于Firefox和Chrome,但不适用于IE11。

我得到的错误是:[tokenName]行上的预期标识符,字符串或数字。

思考?

    $('#container').on('click','#delete',function(e) {
        e.preventDefault();
        var button = $(this),
            form = button.closest('form'),
            id = button.attr('data-id'),
            verify = button.attr('data-verify'),
            tokenName = form.find('input[name=token_name]').val(),
            tokenHash = form.find('input[name=' + tokenName + ']').val();

        // delete user via ajax
        $.post(form.attr('action'), {
                "id" : id,
                "object" : verify,
                [tokenName] : tokenHash
            }, function(data) {

            // do stuff


        }, "json");

    });
javascript internet-explorer csrf
3个回答
3
投票

您可以随时回退到较旧的语法:

  var options = {
      "id" : id,
      "object" : verify,
  };

  options[tokenName] = tokenHash;

  $.post(form.attr('action'), options, function(data) {
      //...
  });

0
投票

你使用babel,是否配置为捆绑IE?


0
投票

Using variable as a key in a Javascript object literal is an ES6 Feature

[tokenName] : tokenHash IE 11不支持此功能

Click here to see ES Compatability Tables for various js engines

© www.soinside.com 2019 - 2024. All rights reserved.