【发布时间】:2012-08-23 09:23:29
【问题描述】:
我创建了一个 phonegap 应用程序,它在初始化时调用 Web 服务(加载 index.html)。我正在拨打电话
$.ajax({
type: "GET",
url: "http://webserviceurl.com/service",
cache: false,
async: true,
success: onSuccess,
error: onError,
timeout: 40000
});
现在,如果 web 服务不可用,服务调用会等待 40 秒(我将限制设置为超时)并将控制权转移到 onError 消息,这反过来会显示一条简单的错误警报消息。
但我的问题是,应用程序显示一个空白屏幕并且在服务调用完成(40 秒)之前不显示 html 页面。我希望 web 服务调用在后端执行并且不影响实际应用程序的加载(我认为 async:true 会有所帮助,但事实并非如此)。
有什么想法可以让我的应用独立于网络服务调用吗?
编辑 这有效
function appReady(){
// do the ajax here
}
document.addEventListener("deviceready", appReady, false);
【问题讨论】:
-
如果这是在 onLoad() 事件中,页面将首先被加载、显示,然后才会进行 AJAX 调用 - 您确定页面本身有任何内容吗?这绝对不应该阻止 index.html 显示,因为这是一个本地文件,而这是一个外部调用 - 它们是分开的,不会相互阻塞
-
另外,您确定这不是因为跨站点请求吗?也许你忘了设置 $.support.cors = true;现在它正在为你生成一个 JS 错误?
标签: javascript android jquery ajax cordova