0

主に JQuery Mobile を使用するモバイル アプリがあります。POST を使用する ajax 関数があり、クリック イベントを発生させたときに UI に影響を与えるものを取得できないようです。設定してみた

$('#cover').show(); 

関数の最初のこととして、document.getElementById('user') などの基本的なことをいくつか実行して、いくつかの変数を設定し、入力をチェックしますが、ajax 関数がそこにある限り、div は表示されません。 JQモバイルのスピナー。コードをデバッグしてステップ実行しない限り、スピナーと div は正常に表示されます。setTimeout を試して、ajax 呼び出しの beforeSend 領域に配置しました。それ以外の場合はすべて正常に動作します。GET の方が少しうまくいくように見えましたが、それが関係しているかどうかはわかりません。

$.ajax({                
    cache: false,
    type: "POST",
    async: false,
    url: urlString,
    data: jsonstring,
    contentType: "application/json",
    dataType: "json",
    success: function (data) {
        JSONobj = JSON.parse(data);         
    },
    beforeSend: function(xhr){
          //console.log('BeforeSend');
    },
    complete: function (xhr) {
        //console.log('Complete');
    },
    error: function (xhr, status, error) {
      console.log(error);
    }
});
4

2 に答える 2

1

これを処理するには、Ajaxグローバルハンドラーを使用できます。

$(document). 
    .ajaxStart(function(){
        $('#cover').show();
    })
    .ajaxStop(function(){
        $('#cover').hide();
    });

このようにして、個々のAjax呼び出しでオーバーレイを表示/非表示にすることを心配する必要はありません。

于 2012-07-12T09:32:47.473 に答える
0

これを試して

$("#someButton").click(function(e){

   e.preventDefault() //if you want to prevent default action

    $('#cover').fadeIn(100,function(){

       $.ajax({     
              url: "someurl",
              data: "Somedata",
              contentType: "application/json",
              dataType: "json",        
              },
              success: function (data) {
                   JSONobj = JSON.parse(data);
                   $('#cover').fadeOut(100);        
              },
               complete: function (xhr) {
                   $('#cover').fadeOut(100);
              }
       });  

    }); 

});
于 2012-07-11T19:59:36.983 に答える