Не удается получить сообщение о загрузке при вызовах 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);
Одной секунды достаточно. Также взгляните на мой старый ответ или этот. По сути, я не хочу сообщать об этом как о дубликате, потому что я не знаю, является ли это все еще проблемой сегодня. Пожалуйста, оставьте комментарий, сообщающий мне, работает ли это решение или нет.