PhoneGap不发出AJAX(jsonp)请求
我一整天都在努力解决这个问题,并且已经在各处搜索了一下。 可能是因为我找不到一个解决方案的页面……但我已经看过问题和解决方案,例如:
Ajax调用phonegap没有发送请求
JQuery mobile + Phonegap:Ajax调用无法在Android Emulator上运行
并且那里的解决方案似乎都没有解决我的问题。
我想做的就是向我的远程服务器发出一个AJAX调用,上传一些参数并下载一些内容。 此脚本在浏览器中完美运行,但根据Phonegap中文件的微小更改,会抛出“超时”错误,或者只是说“错误”。 代码如下(AJAX端点是一个开发端点,我会把它留下来,所以你也可以尝试点击它):
- Loaded
var serverRegHit = function(data, httpStat){ $("#app-status-ul").append('Server Reg OK, HTTP status: '+httpStat+' '); $("#app-status-ul").append('Data Status: '+JSON.stringify(data)+' '); }; var serverRegFail = function(data, httpStat){ $("#app-status-ul").append('Server Reg FAIL, HTTP status: '+httpStat+' '); $("#app-status-ul").append('Data Status: '+JSON.stringify(data)+' '); }; $.ajax({url:"http://keb.bz/gcm/?deviceid=12345", jsonp: 'callback', dataType: 'jsonp', timeout: 25000, success: serverRegHit, error: serverRegFail});
我曾尝试使用cordova 2.9,并降级到2.5,但这似乎也没有帮助。
我的config.xml已列入白名单。*和keb.bz域,权限允许应用程序访问清单中的互联网 – 我认为这是有效的,因为它能够成功检索GCM设备ID。
我尝试过通过AJAX使用JSON,JSONp,TEXT和各种dataType,但这些都没有任何区别。
我错过了Cordova / PhoneGap中的另一个配置点吗?
任何帮助在这里将不胜感激。
感谢@xioawl让我仔细检查我的manifest.xml。 结果我没有在那里正确配置权限。
最后,我结束了使用Cordova 2.5,jQuery 1.10,(没有使用jQuery Mobile),使用以下访问路径设置我的res / config.xml:
在包含所有JavaScript库之后放置此代码段:
并使用以下manifest.xml权限:
我的JSONp查询继续如下所示:
$.ajax({url:"http://keb.bz/gcm/?deviceid=12345", jsonp: 'callback', dataType: 'jsonp', timeout: 25000, success: serverRegHit, error: serverRegFail});
希望这对某人有用!
当我使用在线PhoneGap编译器更新我的应用程序时,我今天遇到了类似的错误…
我上次在2015年4月完成了应用程序。然后今天做了一些调整,没有什么重大的,遵守它,我的所有ajax请求都失败了。 我做了并警告错误字符串,所有它都说“超时”。
然后我将phonegap-version指定为3.7.0,并重新编译…我的所有ajax再次工作。 不确定CLI5.1和5.2改变了什么,但它杀了我的应用程序。
短期解决方案,很快就可能不再支持3.7了,然后我将被卡住进行更改…我猜的好时机