Script1014:对于 IE 11,用 jQuery.ajax 替换 fetch 的字符无效

Script1014: Invalid Character replacing fetch with jQuery.ajax for IE 11

我正在为旧的 javascript 组件添加 i18n 支持。它以前不需要xhr/fetch,但它仍然需要在 IE11 中工作。

我不想写:

    fetch("/libs/cq/i8n/dict." + lang + ".json")
        .then(function(response) { return response.json(); })
        .then(function(data) {
            dictionary = data;
        });

但是我知道IE不支持fetch。我们有 jQuery 可用,所以我尝试了:

    jQuery.ajax({
        url: "/libs/cq/i18n/dict." + lang + ".json",
        success: function (response) {
            dictionary = JSON.parse(response);
            onReady();
        }
    })

现在我明白了:

SCRIPT1014: Invalid Character

index.js (49,17)

我意识到 49,17 指的是文件中的位置,第 49 行,字符 17。那是 dictionary = JSON.parse(response);

中的 d

我已经测试了响应,它是严格有效的JSON。

由于某种原因 dictionary = eval(response) 正在工作。

问题是 jQuery 已经检测到它是 JSON 并为我解析了它。

Invalid Character 错误消息告诉我传递给 JSON.parse 的字符串是一个对象。

第 49 行我需要的是:

            dictionary = response;