phonegap build + ajax调用不能在android上运行

时间:2015-10-05 18:52:13

标签: php android jquery ajax cordova

我正在构建一个带有phonegap构建的phonegap应用。我的ajax调用在我的浏览器和Ripple Emulator上工作正常,但是一旦我从phonegap构建中获取apk并将其安装在Samsung Galaxy 4上,我就会收到错误。

这是我的ajax电话:

 var usuario = $('#usuario').val();
    var password = $('#password').val();

    $.ajax({
        url: 'http://www.example.com/page.php',
        jsonp: "callback",
        dataType: "jsonp",
        data: {nombre:usuario, password:password},
        success: function (data) {
            console.log(data);
            var respuesta = data.resp;

            if (respuesta == 0) {
                alert('Hubo un error, inténtalo de nuevo');
            };
            if (respuesta == 1) {
                var id = data.id;
                window.localStorage.setItem("usuario", id);
                window.location.replace('bici.html');
            };
        },
        error: function (xhr, status, error) {
            alert(xhr.responseText+status+error);

        }
    });

我的php标题

header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: POST,GET,OPTIONS");
header("Access-Control-Allow-Headers: content-type");
header("Access-Control-Allow-Headers: NCZ");
header('Content-type: application/json;charset=utf-8');
date_default_timezone_set('America/Mexico_City');

和我的config.xml

- >

<access origin="*"/>
<access origin="http://www.example.com" />
<!-- Added the following intents to support the removal of whitelist code from    base cordova to a plugin -->
<!-- Whitelist configuration. Refer to       https://cordova.apache.org/docs/en/edge/guide_appdev_whitelist_index.md.html -->
<plugin name="cordova-plugin-whitelist" version="1" />
<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:*" />

2 个答案:

答案 0 :(得分:2)

我得到了它的工作!沿着那条线,我只需要添加plig-in。

config.xml上的插件行是 <gap:plugin name="cordova-plugin-whitelist" source="npm"/>

我的html的元标记 <meta http-equiv="Content-Security-Policy" content="default-src data: gap: https://ssl.gstatic.com 'unsafe-eval' *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.example.com; connect-src 'self' http://www.example.com">

答案 1 :(得分:1)

如果您要针对Cordova 5进行构建,您可能需要在PhoneGap应用的HTML文件中的内容安全策略元标记中至少设置一个connect-src,并对其进行配置以便您的应用可以与您的服务器通信。 Raymond Camden有一个很好的blog entry覆盖了这个。

默认情况下,除非您配置内容安全策略,否则Cordova 5将不允许连接。

以下是应用HTML中的示例配置:

<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://www.example.com">

进一步的文件可以是found here