JQuery AJAX вызова в сафари MVC5 - PullRequest
1 голос
/ 07 июня 2019

У меня есть функция JavaScript, которая делает вызов ajax, передавая идентификатор.В Safari это не работает, во всех других браузерах это делает

function populateContractList(ShowLoader, HideLoader) {
  var frm = document.querySelector("#frmSchedule");
  var id = frm.elements["ID"].value;
  var url = '@Url.Action("Contracts", "Contract")';

  ShowLoader();

  $.ajax({
    type: 'get',
    dataType: 'json',
    cache: false,
    url: url,
    async: true,
    data: { id }
  }).done(function(data) {
    var available = $('#multiselectContract option').length;
    if (available == 0) {
      data.forEach(function(obj) {
        if (!$('#js_multiselect_to_1').find("option:contains('" + obj.ContractId + "')").length) {
          $('#multiselectContract').append($("<option></option>").attr("value", obj.Holder).text(obj.ContractId));
        }
      });
    }

    HideLoader();
  }).fail(function() {
    HideLoader();
    bootbox.alert({
      title: '<div class="text-center text-info"><i class="fa fa-info-circle"></i>&nbsp;&nbsp;No Contacts Assigned</div>'
    });
  });
}

Safari генерирует эту ошибку в консоли, и страница перестает работать правильно

SyntaxError: Ожидается идентификаторно нашел вместо этого '}'

ошибка в этой строке

data: { id } 

Если я уберу обе скобки {}, он больше не будет жаловаться, но он перестанет работать Есть лиОбходной путь?

1 Ответ

0 голосов
/ 07 июня 2019

Вы используете сокращенный инициализатор объекта в data: { id }. То есть объект будет создан с ключом, соответствующим имени переменной, и значением значения переменной.

Это особенность ES2015, которая доступна только в Safari 9 и новее (и совсем не в IE). Таким образом, вам нужно использовать более традиционный синтаксис инициализатора объекта:

data: { id: id }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...