Квадратная скобка JavaScript как значение переменной - PullRequest
0 голосов
/ 07 сентября 2018

Мне нужно передать значение переменной как имя в приведенной ниже функции, используя [tokenName] для целей CSRF. Он отлично работает в 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");

    });

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Использование переменной в качестве ключа в литерале объекта Javascript является функцией ES6

[tokenName] : tokenHash эта функция не поддерживается IE 11

Нажмите здесь , чтобы увидеть таблицы совместимости ES для различных двигателей js

0 голосов
/ 07 сентября 2018

Вы всегда можете вернуться к старому синтаксису:

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

  options[tokenName] = tokenHash;

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