Safari MVC5中的jquery ajax调用

时间:2019-06-07 12:19:41

标签: jquery ajax safari

我有一个JavaScript函数,可通过id进行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 :(得分:0)

您正在data: { id }中使用速记对象初始化程序。也就是说,将使用与变量名匹配的键和变量值的值来创建对象。

这是{2015 {3}}和更高版本的ES2015的功能(在IE中根本没有)。这样,您将需要使用更多传统的对象初始化程序语法:

data: { id: id }