我正在寻找解决方案,但一路都失败了。以下代码在JQuery 1.4.4,JQuery Mobile 1.0a2和PhoneGap 0.9下运行良好。但是,当我将它转移到JQuery 1.7.1,JQuery Mobile 1.1.0和PhoneGap 1.5时;它继续在错误下跌。我通过Fiddler跟踪了http调用,并意识到ajax确实调用了URL,但为什么它会出错而不是成功?请帮忙!
$.ajax({
type: "GET",
cache: false,
url: updateServer+'update.xml',
dataType: "xml",
error: function(xhr, settings, exception){
alert('The update server could not be contacted.');
},
success: function(xml){
// success code
}
});
答案 0 :(得分:3)
确保您可以从模拟器本身访问Web服务,并允许应用程序访问Internet连接。
要在模拟器中执行此操作,请打开默认浏览器并输入URL。它不应该给你404或任何例外。
答案 1 :(得分:3)
我在Phonegap 1.5中遇到了这个问题。降级到Phonegap 1.4.1解决了这个问题。我连续几天感到沮丧,无法理解这个问题。
答案 2 :(得分:1)
jQuery Mobile在关于使用PhoneGap实现的文档中有一整页。在这里查看。
http://jquerymobile.com/test/docs/pages/phonegap.html
您必须设置权限以允许跨域ajax调用。
另外!如果要从Web应用程序移植,请记住更改html文件中的代码。很可能你打电话给网址“../api/handler.php”或其他东西。您需要将所有这些调用绝对用于PhoneGap。 “http://mydomain.com/api/handler.php”
答案 3 :(得分:0)
好的,我认为这个问题实际上就是网址本身。 URL地址有效,因为它可以访问,但它不属于同一个域。例如,带有JQuery的html文件位于http://www.yahoo.com/index.html,但我尝试调用的URL是http://www.google.com。
由于安全问题,浏览器阻止从托管在一个域上的页面到托管在不同域(同一源策略)上的页面进行ajax调用。我的解决方案是使用php文件从另一个域检索相关数据,而html(使用JQuery)调用php文件如下:
$.ajax({
type: "GET",
cache: false,
url: 'getcontent.xml',
dataType: "xml",
error: function(xhr, settings, exception){
alert('The update server could not be contacted.');
},
success: function(xml){
// success code
}
});
$.ajax({
type: "GET",
cache: false,
url: 'getcontent.xml',
dataType: "xml",
error: function(xhr, settings, exception){
alert('The update server could not be contacted.');
},
success: function(xml){
// success code
}
});
感谢您提供所有帮助!