Ajax请求无法在cordova android应用程序上运行

时间:2016-06-18 01:42:13

标签: android jquery json cordova jquery-mobile

我有一个cordova Android应用程序,用于显示来自JSON Web服务的新闻 当我创建.apk文件时,ajax请求在Web浏览器上工作但在android上不起作用 应用https://github.com/Adib12/technologia

的链接

我的配置文件

<?xml version='1.0' encoding='utf-8'?>
<widget id="io.cordova.hellocordova" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>Technologia</name>
    <description>
        Suivre les actualités des nouvelles technologies
    </description>
    <author email="dev@cordova.apache.org" href="http://cordova.io">
        Aouadi Adib ( AdibDev )
    </author>
    <content src="index.html" />
    <plugin name="cordova-plugin-whitelist" spec="1" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <allow-intent href="market:*" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
</widget>

我需要帮助

1 个答案:

答案 0 :(得分:1)

从您发布的Github链接中,您似乎正在尝试连接到localhost URL。这在设备上运行时不起作用,因此您需要将其更改为您要连接的资源的名称或其IP地址(最好使用DNS名称)。

此外,我注意到您在index.html的head部分中没有Content-Security-Policy元标记 - 对于Cordova 5及更高版本,您将需要其中一个...这指定了您的应用可以使用的资源连接至。假设您想要发出Ajax请求的服务正在http://myserver.mydomain.com运行,那么您的CSP元标记需要看起来像这样:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://myserver.mydomain.com">

我撰写了一篇博客文章,内容涉及针对Android和iOS设置内容安全政策here

请将localhost更改为www / js / script.js中的有效服务器名称,具体在此处:

$.ajax({
            type: "POST",
            url: "http://localhost/sv/connect.php",
            data: formData,
            cache: false,
            dataType: 'JSON',
            success: onSucces,
            error: onError
        });

并将内容安全策略元标记添加到head部分的www / index.html。