1

Web アプリ内で jQuery モバイルを使用しています。これら 2 つの関数を使用して、糸車とユーザーへのメッセージの表示と非表示を切り替えます。

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;}
}

Ajax 呼び出しの前に適切なパラメーターを指定して showScreenMsg を呼び出し、Ajax が成功したら hideScreenMsg を呼び出します。

たとえば、人のリストでそれを行います。リスト要素をクリックすると、ajax によって人の詳細が取得されます。私の問題は、おそらく JQM (およびデバイス) の遅さのために読み込みメッセージが表示されないことです。つまり、デバイスがメッセージを表示する前に ajax の回答が得られる可能性があります。ただし、ユーザーがクリックしてから情報が表示されるまでに 3 ~ 5 秒かかります。この間は何も起こらないので、これは避けたいものです。誰にも解決策がありますか?

4

1 に答える 1

0

これは長いショットなので、1 つ説明させてください。私は 9 か月間活動を休止した後、ここに戻ってきました。しかし、これは去年の問題で、その時は解決しています。

何らかの理由で、Web キット ブラウザーを使用する場合、setTimeout または serInterval を使用して jQuery Mobile AJAX ローダーをトリガーする必要があります。

例えば:

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

1秒で十分です。私の古い答え、またはこれも見てください。基本的に、これが今日でも問題であるかどうかわからないため、これを重複として報告したくありません。この解決策が機能するかどうかをコメントで教えてください。

于 2014-05-23T19:29:16.467 に答える