我已经在这三天了,而且我已经尝试了几乎所有的替代代码和修复无济于事。
这是代码,取自bog标准的jQuery示例:
$.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;
});
另外,我有:
添加&lt; uses-permission android:name =“android.permission.INTERNET”/&gt;到AndroidManifest.xml文件
在同一目标的浏览器中测试了json请求URL(正常工作)
请注意,这不是完整的代码,但它只是位于标准的.ready()函数中的标准phonegap deviceready listener事件函数中。
这在我的手机上失败并且SDK似乎表明存在phonegap / Eclipse问题,而不是连接/权限问题。
我正在尝试使用Android SDK部署到Android 2.3 AVD。我还没有尝试过部署到Android 4 AVD。
如果有人知道问题是什么,我会喜欢它,因为我已经没有尝试的建议!
答案 0 :(得分:3)
如果前提条件是您可以修改服务器上的PHP代码..
尝试此操作,以便您可以在本地浏览器或移动设备上测试WITHOUT 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可能是
$.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') });
});
2.你的php是这样的:
<?php
header('Access-Control-Allow-Origin: *');//for local browser test
$test='[{"name":"aa","address":"aa"}, {"name":"bb","address":"bb"}]';
echo $test;
?>
答案 1 :(得分:0)
in
$( document ).bind( "mobileinit", function()
添加
$.support.cors = true.
:)
答案 2 :(得分:0)
我尝试了很多组合,最终起作用的是将我的index.html添加到以下内容中。关键是在加载jquerymobile之前确保它已加载(如果你正在使用它)。如果在此之后的任何地方加载它将无法工作。
<script type="text/javascript">
$(document).bind("mobileinit", function() {
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
});
</script>