我有一个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> No Contacts Assigned</div>'
});
});
}
Safari在控制台中生成此错误,并且页面无法正常工作
SyntaxError:应为标识符,但找到的是'}'
错误在此行
data: { id }
如果我同时删除了两个括号{},它将不再抱怨,但是它确实停止工作 有解决方法吗?
答案 0 :(得分:0)
您正在data: { id }
中使用速记对象初始化程序。也就是说,将使用与变量名匹配的键和变量值的值来创建对象。
这是{2015 {3}}和更高版本的ES2015的功能(在IE中根本没有)。这样,您将需要使用更多传统的对象初始化程序语法:
data: { id: id }