JavaScript方括号作为变量值

时间:2018-09-07 18:03:16

标签: javascript internet-explorer csrf

出于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");

    });

3 个答案:

答案 0 :(得分:3)

您总是可以退回到较旧的语法:

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

  options[tokenName] = tokenHash;

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

答案 1 :(得分:0)

您是否正在使用babel,它是否已配置为捆绑IE?

答案 2 :(得分:0)

在Javascript对象文字中使用变量作为键是ES6功能

let myString = 'company234' setItem(myString, myData) IE 11不支持此功能

点击here查看各种js引擎的ES兼容性表