PhoneGap 不发出 AJAX (jsonp) 请求

PhoneGap not issuing AJAX (jsonp) request

本文关键字:jsonp 请求 AJAX PhoneGap      更新时间:2023-09-26

我整天都在努力解决这个问题,并且到处都在谷歌上搜索。可能是我只是找不到带有解决方案的一页......但我研究了问题和解决方案,例如:

电话间隙上的 Ajax 调用未发送请求

JQuery mobile + Phonegap:Ajax 调用在 Android 模拟器上不起作用

那里的解决方案似乎都没有解决我的问题。

我想做的只是向我的远程服务器发出 AJAX 调用,上传一些参数并下载一些内容。此脚本在浏览器中完美运行,但根据 Phonegap 中对文件的微小更改,要么回抛"超时"错误,要么只是说"错误"。代码如下(AJAX 端点是一个开发端点,我将保留它,以便您也可以尝试点击它(:

<html>
<head>
<script type="text/javascript" charset="utf-8" src="jquery-1.10.2.min.js"></script>
</head>
<body>
<ul>
<div id="app-status-ul">
<li>Loaded</li>
</div>
</ul>
</body>
<script>
var serverRegHit = function(data, httpStat){
    $("#app-status-ul").append('<li>Server Reg OK, HTTP status: '+httpStat+'</li>');
    $("#app-status-ul").append('<li>Data Status: '+JSON.stringify(data)+'</li>');
};
var serverRegFail = function(data, httpStat){
    $("#app-status-ul").append('<li>Server Reg FAIL, HTTP status: '+httpStat+'</li>');
    $("#app-status-ul").append('<li>Data Status: '+JSON.stringify(data)+'</li>');
};
      $.ajax({url:"http://keb.bz/gcm/?deviceid=12345",
              jsonp: 'callback',
              dataType: 'jsonp',
              timeout: 25000,
              success: serverRegHit,
              error: serverRegFail});
</script>
</html>

我尝试使用cordova 2.9,并降级到2.5,但这似乎也没有帮助。

我的配置.xml已将.*和 keb.bz 域列入白名单,这些权限使应用程序可以访问清单中的互联网 - 我认为这是有效的,因为它能够成功检索GCM设备ID。

我尝试通过AJAX使用JSON,JSONp,TEXT和各种数据类型,但这些都没有产生任何区别。

Cordova/PhoneGap中是否缺少另一个配置点?

这里的任何帮助将不胜感激。

感谢@xioawl让我仔细检查我的清单.xml。事实证明,我没有在那里正确配置权限。

最后,我最终使用了Cordova 2.5,jQuery 1.10(没有使用jQuery Mobile(,使用以下访问路径设置了我的res/config.xml:

<access origin="http://127.0.0.1*" />
<access origin="http://keb.bz" subdomains="true" />
<access origin=".*" />  <!-- only during development -->

在包含所有 JavaScript 库之后放置此代码片段:

<script>
$(document).bind("mobileinit", function(){
   $.mobile.allowCrossDomainPages = true;
});
</script>

并使用以下清单.xml权限:

<uses-permission android:name="android.permissions.INTERNET" />
<uses-permission android:name="android.permissions.NETWORK_ACCESS" />
<uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />

我的 JSONp 查询继续如下所示:

$.ajax({url:"http://keb.bz/gcm/?deviceid=12345",
        jsonp: 'callback',
        dataType: 'jsonp',
        timeout: 25000,
        success: serverRegHit,
        error: serverRegFail});

希望这对某人有用!

当我使用在线PhoneGap编译器更新我的应用程序时,我今天遇到了类似的错误......

我最后一次使用该应用程序是在 2015 年 4 月。然后今天做了几个星期,没什么大不了的,遵守了它,我所有的 ajax 请求都失败了。我做到了,并提醒错误字符串,并且所有内容都说"超时"。

然后我将Phonegap版本指定为3.7.0,并重新编译...我所有的阿贾克斯又开始工作了。不确定 CLI5.1 和 5.2 发生了什么变化,但它杀死了我的应用程序。

短期解决方案,一旦 3.7 可能不再受支持,然后我就会陷入更改......我想是去本土化的好时机