Не удается получить сообщение о загрузке при вызовах ajax

Я использую мобильное приложение jQuery в своем веб-приложении. Я использую эти две функции, чтобы показать и скрыть вращающееся колесо и сообщение пользователю:

function showScreenMsg(msg,text_only) {
  $.mobile.loading('show',{ text:msg, textVisible:true, theme:'b', textonly:text_only});
}

function hideScreenMsg(){
  $.mobile.loading('hide');
}

//AJAX CALL
function show_dtl(element,id){
showScreenMsg('loading',false);

var details;
$.ajax({
        async:false,
        url:'./shyne/ajax/show_dtl.php',
        data: {user_dtl_id:id},
}).done(function(data)
        {   
            if (data){
                data = $.parseJSON(data);
                details = data;
                details = formatDetails(details);
                hideScreenMsg();
            }   
        }       
    );
if(details){return details;}
}

Я вызываю showScreenMsg с надлежащими параметрами перед вызовом Ajax, а когда Ajax преуспевает, я вызываю hideScreenMsg.

Я делаю это, например, в списке людей, где, нажимая на элементы списка, вы получаете информацию о людях по ajax. Моя проблема в том, что, возможно, из-за медлительности JQM (и устройства) сообщение о загрузке не появляется, я имею в виду, может быть, я получаю ajax-ответ, прежде чем устройство сможет отобразить сообщение. Однако 3-5 секунд проходит от клика пользователя до отображения информации. За это время ничего не происходит, и я должен этого избегать. У кого-нибудь есть решение?

1 ответ

Это длинный выстрел, поэтому позвольте мне объяснить одну вещь, я вернулся сюда после 9 месяцев бездействия. Но что-то вроде этого было проблемой в прошлом году, и это я решаю тогда.

По какой-то причине при работе с веб-браузерами необходимо использовать setTimeout или serInterval для запуска загрузчика jQuery Mobile AJAX.

Например:

setTimeout(function(){
    $.mobile.loading('show',{ text:msg, textVisible:true, theme:'b', textonly:text_only});
}, 1);

Одной секунды достаточно. Также взгляните на мой старый ответ или этот. По сути, я не хочу сообщать об этом как о дубликате, потому что я не знаю, является ли это все еще проблемой сегодня. Пожалуйста, оставьте комментарий, сообщающий мне, работает ли это решение или нет.

Другие вопросы по тегам