我正在为黑莓7开发一个网络应用程序,我遇到了一个有趣的dillema。我在普通浏览器(Chrome)中运行的代码非常完美,但设备浏览器却没有。
我有一个需要在pageinit上调用的webservice调用。奇怪的是这个。电话和一切在页面显示上完美运行,但不在pageinit上。如果我在pageinit上执行服务,webservice调用(Get Policies)会成功执行,然后它永远不会继续使用pageinit中的其余代码。
$('#ClaimsPage').bind('pageinit', function() {
GetPolicies();
//Never gets back to this point after completing the GetPolicies Function
if (sessionStorage.wasSuccessful == 'true') {
PolicyListBuilder(JSON.parse(sessionStorage.Policies));
} else {
goBack();
}
});
我的网络服务电话很简单,如下所示。
function GetPolicies() {
showBusy("Retrieving Policies...");
$.ajax({
async: false,
beforeSend: function (request) {
request.setRequestHeader("Device", reportingDeviceId);
request.setRequestHeader("Authorization", getAuth64());
},
type: 'GET',
url: PolicyGetWsUrl(),
success: function (resultMessage) {
sessionStorage.wasSuccessful = resultMessage.WasSuccessful;
if (resultMessage.WasSuccessful == true) {
sessionStorage.Policies = JSON.stringify(resultMessage.PolicyList);
hideBusy();
} else {
alert(resultMessage.Description);
}
},
error: genErrorMessage
});
hideBusy();
}
PolicyListBuilder函数正确执行,如果我使用
$('#ClaimsPage').bind('pageshow', function()...
该程序运行得很好,但我宁愿在pageinit上使用它。我也尝试使用.on()而不是.bind()
有没有我错过的东西?
提前感谢您的帮助。
修改
我还应该注意到,我在同一个应用程序中使用了pageinit其他一些地方,它们似乎完美无缺。这很奇怪。有没有人有任何想法?
答案 0 :(得分:0)
好的,我做了一些研究并发现了一些事情。
pageinit在整个DOM加载之前发生,因此如果你引用控件,它可能还不存在,从而失败。
有一种解决方法。你可以使用.delegate()或$(document).ready()......它们都可以使用。如果有人有更好的答案,我会保持这个。