使用 Cordova 10 的应用内 AJAX 无法在 iOS 中运行

Posted

技术标签:

【中文标题】使用 Cordova 10 的应用内 AJAX 无法在 iOS 中运行【英文标题】:In-app AJAX not working in iOS with Cordova 10 【发布时间】:2020-10-06 07:59:50 【问题描述】:

我刚刚从 Cordova 8 更新到 Cordova 10。主要是因为 Apple 弃用了 UIWebView。我使用cordova-ios@6.1.1。我为测试目的创建了一个默认的 Cordova 项目。我没有添加任何插件,除了 jQuery 版本 3.5.1 之外没有其他任何东西。我将 AJAX 请求添加到内部应用程序文件 css/index.css (这在 Cordova 8 中工作正常):

function onDeviceReady() 
    // Cordova is now initialized. Have fun!

    console.log('Running cordova-' + cordova.platformId + '@' + cordova.version);
    document.getElementById('deviceready').classList.add('ready');

    $.ajax(
        url: "css/index.css",
        success: function (resp) 
            console.log("load OK");
            return false;
        ,
        error: function (xhr, status, exc) 
            console.log("load fail");
            return false;
        
    );

当我运行应用程序时,AJAX 调用失败并显示 status = "error"。请问,有没有人可以建议更改了什么以及如何使这样的 AJAX 调用正常工作?

【问题讨论】:

这能回答你的问题吗? Why is jQuery Ajax not working in Cordova iOS app 是的,就是这样,谢谢。把它作为答案,我会标记它。 【参考方案1】:

您需要移动到 WKWebView 并需要使用 cordova-plugin-wkwebview-file-xhr 或 cordova-plugin-ios-xhr 因为文件没有来源并且会因 CORS 失败。

【讨论】:

以上是关于使用 Cordova 10 的应用内 AJAX 无法在 iOS 中运行的主要内容,如果未能解决你的问题,请参考以下文章

科尔多瓦没有提出ajax请求

Ajax请求不适用于cordova android应用程序

Cordova 应用程序正在 Android 应用程序的数据空间上使用 AJAX 保存 DOM 加载的数据

适用于 iOS 的 Phonegap/Cordova 日历插件无响应

如何使用 Cordova 通过移动应用程序对用户进行身份验证

jQuery Ajax在cordova iOS应用程序上发送之前成功