jQuery Mobile show()和hide()在Android中不起作用

时间:2013-01-30 18:45:22

标签: android jquery show-hide

当我进行ajax调用以获取信息时,我正在尝试显示“请稍候...”消息。基本上,用户输入他们的搜索词,点击搜索,我想在页面进行ajax调用时显示“Please wait ...”,然后在完成后隐藏它。

我的jsp页面上有一个div,看起来像这样:

<div id="modalWindow">Please Wait...</div>

我的jQuery看起来像这样:

jQuery('#modalWindow').css({
    'text-align' : 'center',
    'font-size' : '20px'
}).hide();  //this is called when the page initially loads

jQuery('#modalWindow').show();    //I call this in the function that does the Ajax call

jQuery('#modalWindow').hide();    //I call this once the Ajax is done.

这是我的整个Ajax调用:

jQuery.ajax(
{
    url : urlContext + "/getItems.html",
    data :
    {
        txtItemReference : txtItemReference
    },
    dataType : "json",
    cache : false,
    async : false,
    timeout : 100000,
    success : function(jsonResponse)
    {
        if ( jsonResponse instanceof Object)
        {
            if (jQuery.isEmptyObject(jsonResponse))
            {
                createLocationDisplayPanel(false);
                createSimilarItemsPanel(false);
            }
            else if (jsonResponse['Locations'] != undefined)
            {
                responseArray = new Array();
                arrayStart = 0;
                intPage = 1;

                if (jsonResponse['Locations'].length <= 20)
                {
                    for (var x = arrayStart; x < jsonResponse['Locations'].length; x++)
                    {
                        responseArray[x] = jsonResponse['Locations'][x];
                    }
                }

                else
                {
                    responseArray = new Array();

                    for (var x = arrayStart; x < (20 * intPage); x++)
                    {
                        responseArray[x] = jsonResponse['Locations'][x];
                    }
                }

                createLocationDisplayPanel(jsonResponse, responseArray, txtItemReference, urlContext, callback);
            }
            else
            {
                if (jsonResponse['Items'].length <= 20)
                {
                    for (var x = arrayStart; x < jsonResponse['Items'].length; x++)
                    {
                        responseArray[x] = jsonResponse['Items'][x];
                    }
                }

                else
                {
                    for (var x = arrayStart; x < (20 * intPage); x++)
                    {
                        responseArray[x] = jsonResponse['Items'][x];
                    }
                }

                createSimilarItemsPanel(jsonResponse, responseArray, txtItemReference, urlContext, callback);
            }
            if (callback != undefined)
            {
                callback();
            }
        }
        else
        {
            alertLogout(document.URL);
        }
    },
    error : function(jsonResponse)
    {
        if (jsonResponse.hasOwnProperty('ERROR'))
        {
            alertError("There was no response from the server.");
        }
    }
});

这适用于我桌面上的Firefox以及适用于Android的Firefox。但是,在我尝试的每个Android浏览器上,“请稍候......”文本永远不会显示,我感到很沮丧。任何人都可以告诉我使用show()和hide()函数在Android浏览器中工作的解决方法吗?感谢。

2 个答案:

答案 0 :(得分:0)

您是否检查过jQuery是否已加载?在脚本之前写下这个。

if (typeof jQuery == 'undefined') {  
    alert('jQuery is not loaded'); 
}

您可能需要合并脚本或找到确保按您需要的顺序加载脚本的方法。

答案 1 :(得分:0)

我发现问题出在Ajax调用的async属性中:

jQuery.ajax(
{
    url : urlContext + "/getItems.html",
    data :
    {
        txtItemReference : txtItemReference
    },
    dataType : "json",
    cache : false,
    async : true,   //was false before
    timeout : 100000,
    success : function(jsonResponse)
    {
        if ( jsonResponse instanceof Object)
        {
            if (jQuery.isEmptyObject(jsonResponse))
            {
                createLocationDisplayPanel(false);
                createSimilarItemsPanel(false);
            }
            else if (jsonResponse['Locations'] != undefined)
            {
                responseArray = new Array();
                arrayStart = 0;
                intPage = 1;

                if (jsonResponse['Locations'].length <= 20)
                {
                    for (var x = arrayStart; x < jsonResponse['Locations'].length; x++)
                    {
                        responseArray[x] = jsonResponse['Locations'][x];
                    }
                }

                else
                {
                    responseArray = new Array();

                    for (var x = arrayStart; x < (20 * intPage); x++)
                    {
                        responseArray[x] = jsonResponse['Locations'][x];
                    }
                }

                createLocationDisplayPanel(jsonResponse, responseArray, txtItemReference, urlContext, callback);
            }
            else
            {
                if (jsonResponse['Items'].length <= 20)
                {
                    for (var x = arrayStart; x < jsonResponse['Items'].length; x++)
                    {
                        responseArray[x] = jsonResponse['Items'][x];
                    }
                }

                else
                {
                    for (var x = arrayStart; x < (20 * intPage); x++)
                    {
                        responseArray[x] = jsonResponse['Items'][x];
                    }
                }

                createSimilarItemsPanel(jsonResponse, responseArray, txtItemReference, urlContext, callback);
            }
            if (callback != undefined)
            {
                callback();
            }
        }
        else
        {
            alertLogout(document.URL);
        }
    },
    error : function(jsonResponse)
    {
        if (jsonResponse.hasOwnProperty('ERROR'))
        {
            alertError("There was no response from the server.");
        }
    }
});

一旦我改变了,show和hide在Android中运行。谢谢你的帮助。