0

我正在尝试做一些看起来相当简单的事情。基本上我有一个 Ajax 事件侦听器,它检查 Ajax 开始事件和 Ajax 结束事件,当检测到开始或结束时,它应该运行$.mobile.loading('show'),当 Ajax 事件结束时它应该运行$.mobile.loading('hide')。但是,加载图标和文本不显示。

认为我的 Ajax 事件开始和事件结束侦听器没有正确接收 Ajax 开始和结束事件有问题,我将其替换$.mobile.loading('show')为标准警报,该警报正常工作。这是我的代码:

$("#page1").ajaxStart(function() { $.mobile.loading('show'); });

$("#page1").ajaxEnd(function() { $.mobile.loading('hide'); });

我知道我做错了什么,但我不知道是什么。任何想法?

哦,在重要的情况下,这个 JQM 应用程序在 cordova (1.7.0) 和 jquery 1.8.1 和 jquery mobile 1.1.1 下运行

库按该顺序加载,事件侦听器在设备就绪事件之后加载。

所以:

function onBodyLoad() { document.addEventListener("deviceready", onDeviceReady, false); }

function onDeviceReady() {
    / load the ajax start and end listeners code displayed above /
}

编辑: 这是我的文件头的样子:

<script type="text/javascript" charset="utf-8" src="cordova-1.7.0.js"></script>
<script src="js/jquery-1.8.1.min.js"></script>
<script src="js/jquery.mobile-1.1.1.js"></script>
<script type="text/javascript">

function onBodyLoad()
{
    document.addEventListener("deviceready", onDeviceReady, false);
}

function onDeviceReady()
{
    $("#page1").ajaxStart(function() {
        $.mobile.loading('show');
    });

    $("#page1").ajaxStop(function() {
        $.mobile.loading('hide');
    });
}

Page 1 有一些由 JQM 增强的表单字段,当用户单击提交按钮时,它会运行一个函数来检查用户是否连接到网络,如果是,则通过 Ajax 提交该数据。该$.mobile.loading方法应该在 Ajax 执行它的操作时运行,但它没有。

4

1 回答 1

0

您确定 jquerymobile 在您调用 ajax 时已初始化吗?这是您可以尝试并为我工作的方法。(您可以通过命名空间变量进一步清理代码,但这应该给出一个想法)

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

}
于 2012-09-06T15:54:22.550 回答