我已经在这三天了,我已经尝试了几乎所有的替代代码和修复无济于事.
$.ajax({ url: "http://api.wunderground.com/api/4213a68e7f20c998/geolookup/conditions/forecast/q/Australia/Noarlunga.json",dataType: "jsonp",success: function(parsed_json) { alert("YEP!"); var loc = parsed_json['response']; var weather = "Location: " + parsed_json.location.city + "<br />"; weather += "Wind: " + parsed_json.current_observation.wind_dir + " "; weather += parsed_json.current_observation.wind_mph + "-" + parsed_json.current_observation.wind_gust_mph + " knts"; $("#info").html(weather); } });
这里有很多人建议的配置(什么也没做)
$( document ).bind( "mobileinit",function() { // Make your jQuery Mobile framework configuration changes here! $.mobile.allowCrossDomainPages = true; $.mobile.ajaxEnabled = true; $.mobile.pushStateEnabled = false; $.mobile.allowCrossDomainPages = true; });
另外,我有:
>添加< uses-permission android:name =“android.permission.INTERNET”/>到AndroidManifest.xml文件
>在浏览器上测试同一目标上的json请求URL(工作正常)
>在FireFox / Chrome中测试页面(工作正常)
>通过3G在我的Galaxy s2上尝试了应用程序(UI一切正常,但是ajax请求仍然失败)
请注意,这不是完整的代码,但它只是位于标准的.ready()函数中的标准phonegap deviceready listener事件函数中.
这在我的手机上失败了,SDK似乎表明存在phonegap / Eclipse问题,而不是连接/权限问题.
我正在尝试使用Android SDK部署到Android 2.3 AVD.我还没有尝试过部署到Android 4 AVD.
我很喜欢它,如果有人知道问题是什么,因为我已经没有尝试的建议了!
解决方法
如果前提条件是您可以修改服务器上的PHP代码..
试试这个,这样你就可以在本地浏览器或没有JSONP的移动设备上进行测试
1.遵循jQueryMobile网站的说明,解释如何使其与phonegap一起使用(http://jquerymobile.com/test/docs/pages/phonegap.html)
在您的< script>< / script>中区域,添加
$(document).on("mobileinit",function(){ //apply overrides here $.mobile.allowCrossDomainPages = true; $.support.cors = true; });
你的阿贾克斯可能是
$.ajax({ type: "GET",url: "http://xx.xx.xx.xx/xxx/xx.PHP" }).done(function( msg ) { alert(msg); //refresh the content $( '.ui-content' ).load( 'xx/xx.html',function () {$(this).trigger('create') }); });
你的PHP是这样的:
<?PHP header('Access-Control-Allow-Origin: *');//for local browser test $test='[{"name":"aa","address":"aa"},{"name":"bb","address":"bb"}]'; echo $test; ?>