> JQuery Mobile:Alpha 4 v1.0a4.1
> JQuery:v1.6.1
> PhoneGap:v0.9.5
使用phonegap,这个应用程序是内置在一个本机Android应用程序并部署.
在我的应用程序中,我使用$.ajax对外部网站进行各种AJAX调用.
为此,我使用dataType:’jsonp’来进行跨域调用.
当我在Chrome v12.0.742.100中测试我的应用程序时,一切正常,我从外部站点检索数据没有问题.但是,一旦我将它打包成.apk文件,并尝试在模拟器中运行,我发现没有一个ajax调用正在工作.
我已经在ajax调用之前和之后发出警报,并验证这两个警报是否被调用,但是ajax调用与被忽略一样好.我已经登录成功回调和错误回调,也没有达到.我也通过在外部服务器网站上放置一个断点进行验证(对于我的测试,我只在本地机器上单独使用一个网站),并且服务器页面绝对不被调用.
在logcat中,我可以看到的错误是:
D / SntpClient(59):请求时间失败:java.net.SocketException:协议不支持的地址族
我对于手机差距以及Jquery Mobile来说非常新鲜,但据我了解,我的phonegap应用程序文件由file:///协议引用,而我的AJAX URL为http://127.0.0.1:someport/someapp/somepage,错误似乎表明这两个不混合!如果确实是这样,我该怎么做才能从部署应用程序的phonegap进行ajax调用?
请随意指出可能有帮助的任何其他内容!在这一点上我很沮丧.
编辑:我已经检查了AndroidManifest.xml文件,并且在此文件中设置了这个phonegap wiki link的所有权限.
var serverUrl = "http://localhost:2424/MyServer/RetrieveMasterData.aspx"; $.ajax({ url: serverUrl,type: 'POST',dataType: 'jsonp',data: { MasterDataID: 1 },success: function(response) { ...... business logic here },error: function(xhr,ajaxOptions,thrownError) { ...... error handling something here } });
解决方法
尝试将url更改为
http://10.0.2.2:2424/MyServer/RetrieveMasterData.aspx