我使用 Cordova 和 XCode 生成一个应用程序。该应用程序包含对 JSON 文件的本地(!)Ajax 请求,该文件在该应用程序的最新版本中也可以在 iOS 中正常工作。现在,在不更改任何代码的情况下,它在 iOS 中不再起作用。在常见浏览器(包括 Safari)和 Android 中通过 Android Studio 运行良好。
代码很简单:
$.getJSON('test_json_data.json', function(data) {
alert data['something'];
})
JSON 文件是:
{"something":188}
所以不存在跨源脚本之类的东西。这只是一个本地电话。为了获得有关该问题的更多信息,我将其更改为以下内容。这在普通浏览器和 Android 中也可以正常工作,但在 iOS 中则不行。在 iOS 中,它只返回一个“错误”,但不返回错误的内容。
$.ajax({
type: "GET",
dataType: 'json',
url: 'test_json_data.json',
async: false,
contentType: "application/json; charset=utf-8",
success: function (data) {
alert data['something'];
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("some error: " + textStatus + "/" + errorThrown);
}
});
我尝试添加内容安全策略
<meta http-equiv="Content-Security-Policy" content="default-src * 'self' data: 'unsafe-inline' 'unsafe-eval'">
但这也没有帮助。在 cordova 应用程序的 plist 文件中,“允许任意负载”设置为 true。
我(我猜我)还通过使用 cordova 重新创建应用程序并使用来从 UIWebView 更改为 WKWebView
cordova platform add <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="761f1905364058445846" rel="noreferrer noopener nofollow">[email protected]</a>
而不是
cordova platform add ios
现在我不知道该尝试什么了。有人有想法吗?
最佳答案
经过几个小时的研究,我发现添加 [email protected] 后我也得表演
cordova plugin add https://github.com/AraHovakimyan/cordova-plugin-wkwebviewxhrfix
修复 wkwebviewxhr 问题。参见这里:AraHovakimyan / cordova-plugin-wkwebviewxhrfix
关于ios - 仅在 iOS 中基于 cordova 的应用程序中本地(!)AJAX 请求失败且没有错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67300326/