首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PhoneGap未发出AJAX (jsonp)请求

PhoneGap未发出AJAX (jsonp)请求
EN

Stack Overflow用户
提问于 2013-10-12 19:54:18
回答 2查看 4.2K关注 0票数 1

我一整天都在努力解决这个问题,我用谷歌搜索了所有地方。也许我就是找不到有答案的那一页...但我已经研究过问题和解决方案,例如:

Ajax call on phonegap not sending request

JQuery mobile + Phonegap : Ajax calls not working on Android Emulator

而且这两种解决方案似乎都没有解决我的问题。

我所要做的就是向我的远程服务器发出一个AJAX调用,上传一些参数并下载一些内容。这个脚本在浏览器中工作得很好,但根据Phonegap中对文件的微小更改,要么抛出一个“超时”错误,要么只是简单地说“错误”。代码如下( AJAX端点是一个dev端点,我将保留它,这样您也可以尝试访问它):

代码语言:javascript
复制
<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,但这似乎也没有帮助。

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

我尝试过通过AJAX使用JSON、JSONp、文本和各种数据类型,但这些都没有起到任何作用。

在Cordova/PhoneGap中是否还有我遗漏的另一个配置点?

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

EN

回答 2

Stack Overflow用户

发布于 2013-10-13 14:53:20

感谢@xioawl让我仔细检查我的manifest.xml。结果发现我没有正确配置那里的权限。

最后,我使用了CordoVa2.5,config.xml 1.10 (没有使用jQuery移动端),将我的res/config.xml设置为以下访问路径:

代码语言:javascript
复制
<access origin="http://127.0.0.1*" />
<access origin="http://keb.bz" subdomains="true" />
<access origin=".*" />  <!-- only during development -->

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

代码语言:javascript
复制
<script>
$(document).bind("mobileinit", function(){
   $.mobile.allowCrossDomainPages = true;
});
</script>

并使用以下manifest.xml权限:

代码语言:javascript
复制
<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查询仍然如下所示:

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

希望这对某些人有用!

票数 3
EN

Stack Overflow用户

发布于 2015-11-05 22:17:02

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

我上一次编译这款应用是在2015年4月。然后今天做了几个tweeks,没什么大问题,遵守了它,我所有的ajax请求都失败了。我这样做了,并警告错误字符串和它所说的“超时”。

然后我将phonegap-version指定为3.7.0,并重新编译...我所有的ajax又都能用了。不确定CLI5.1和5.2有什么变化,但它杀死了我的应用程序。

短期解决方案,一旦3.7可能不再被支持,然后我将被困在改变……我想这是本地化的好时机

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19333895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档