跨域在IOS(10.3.1)中对.properties文件在ajax中不起作用

37

我使用了i18n插件来加载*.properties文件进行翻译,在安卓平台上很好用,但是同样的库在IOS 10.3.1上无法工作。它给我以下错误:

enter image description here

我已经对i18n库进行了一些更改,但仍然无法正常工作。

function loadAndParseFile(filename, settings) {
    $.ajax({
        url: filename,
        async: false,
        cache: settings.cache,
        crossDomain: true,
        jsonpCallback: 'callback',
        contentType: 'text/plain;charset=' + settings.encoding,
        dataType: 'text',
        success: function (data, status) {
            parseData(data, settings.mode);
        }
    });
}

在上面的代码中:
我已经添加了跨域“true”和数据类型“text”。当我将数据类型从“text”更改为“jsonp”时,它可以工作,但是会出现.properties文件错误。请检查下面的错误信息。

enter image description here

这意味着文件已经被加载,但内部数据格式不同。

是的,日志告诉你Messages.properties文件无效(“意外的标识符'User'”)。这是一个静态文件还是生成的文件?无论哪种方式:你需要修复它。 - Wukerplank
@Wukerplank 是的,它是静态文件。 - user6390636
你在这里传递一个有效的URL吗... $.ajax({ url: filename, ... }) - user3451822
@Goku,你应该将那个文件放在你的服务器上,然后尝试从服务器访问它。IOS有不同的文件结构,这就是为什么它在Windows上运行而在IOS上不运行,AJAX调用需要协议工作。 - Shubham
@所有人 请给我解决方案.. 我已经尝试了上述方法但没有成功.. - user6390636
显示剩余6条评论
2个回答

1
将此行添加到您的 AJAX 参数中。
xhrFields: {
    withCredentials: true
}

0

如果您现在使用的是JSONP而不是文本,则文件将作为JavaScript代码加载,因此,如果内容不是有效的JavaScript代码,则会失败。

用全局变量赋值或函数调用包围数据:

    window.variable = "_DATA_"; // or
    functionName("_DATA_");

如果_DATA_是JSON格式,那么您不需要使用引号括起来,否则您将需要使用"_DATA_",因为没有引号它将不是有效的JavaScript语法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接