我正在尝试做一些看似相当简单的事情。基本上我有一个Ajax事件监听器,它检查Ajax启动事件和Ajax结束事件,当检测到start或end even时,它应该运行$.mobile.loading('show')
,当Ajax事件结束时,它应该运行{{1} }。但是,加载图标和文本不会显示。
认为我的Ajax事件启动有问题,事件结束侦听器没有正确地启动Ajax启动和结束事件我用正常工作的标准警报替换了$.mobile.loading('hide')
。这是我的代码:
$.mobile.loading('show')
和
$("#page1").ajaxStart(function() { $.mobile.loading('show'); });
我知道我做错了什么,但我不知道是什么。有什么想法吗?
哦,重要的是,这个JQM应用程序在cordova(1.7.0)和jquery 1.8.1以及jquery mobile 1.1.1下运行
按顺序加载库,并在设备就绪事件后加载事件侦听器。
这样:
$("#page1").ajaxEnd(function() { $.mobile.loading('hide'); });
编辑:以下是我的文档标题:
function onBodyLoad() { document.addEventListener("deviceready", onDeviceReady, false); }
function onDeviceReady() {
/ load the ajax start and end listeners code displayed above /
}
第1页有一些由JQM增强的表单字段,当用户单击提交按钮时,它会运行一个函数来检查用户是否连接到网络,如果是,则通过Ajax提交该数据。 1}}方法应该在Ajax正在运行时运行,但事实并非如此。
答案 0 :(得分:0)
您确定在调用ajax时初始化了jquerymobile吗?以下是您可以尝试和为我工作的内容。 (您可以通过命名空间变量进一步清理代码,但这应该给出一个想法)
var deviceready = false, pageinitialized = false;
function onBodyLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
$(document).bind("pageinit", function(){
pageinitialized =true;
myloading();
});
}
function onDeviceReady() {
/ load the ajax start and end listeners code displayed above /
myloading();
}
var myLoading = function(){
if ( !deviceready || !pageinitialized ) {
return
}
//Your ajax call here
}