1

私は、jqueryによって純粋なjavascript xhrリクエストメソッドに表示および非表示にする必要があるsignlehtml要素を持っています。今のところ、リクエストが完了/成功したときに非表示にせずに常に要素を表示します。エラーが発生した場合は、もう一度非表示にします。

html

<div class="ajax-loading">Loading ..</a>

xhrメソッド

function post(_url, _callback,_data){

  var xhr = createCORSRequest('POST',_url);
  if (!xhr){
    throw new Error('CORS not supported');
  }
  $('.ajax-loading').show();

  xhr.send(_data);

  /*SUCCESS -- do somenthing with data*/
  xhr.onload = function(){
    // process the response.
    _callback(xhr.responseText);
    $('.ajax-loading').hide();
  };

  xhr.onerror = function(e){
    console.log(e);
    $('.ajax-loading').show();
  };
}

問題は、私が常に$ .ajax()ステートメント(error、success、beforeSend)でそれを行うことです。今回は、純粋なjavascript xhrリクエストがあり、その方法がわかりません。

より明確にするために、私はこれを次のようにxhrjavascriptに変換したいと思います。

$.ajax({
/*data etc ...*/
error:function(){
$('.ajax-loading').show();
},
success:function(){
$('.ajax-loading').hide();
},
beforeSend:function(){
$('.ajax-loading').show();
}
});

編集済み

私も成功せずに試しました:

function get(_url, _callback){
  var xhr = createCORSRequest('GET',_url);
  if (!xhr){
    throw new Error('CORS not supported');

  }


  xhr.send();
  xhr.onreadystatechange = function() {
        if(xhr.readyState == 4 /*COMPLETE STATEMENT*/){
            alert(xhr.readyState);
        }
};
  /*SUCCESS -- do somenthing with data*/
  xhr.onload = function(){
    // process the response.
    _callback(xhr.responseText);

  };

  xhr.onerror = function(e){
    console.log(e);
  };
}
4

2 に答える 2

1

これをチェックしてください: xmlhttprequestのWiki

xmlHTTPRequestでは、オブジェクトの状態をチェックして、リクエストで何が起こっているかを確認する必要があります。

于 2012-05-12T11:52:40.473 に答える
0

で修正

xhr.onloadstart = function(){
       $('.ajax-loading').show();
  }

  xhr.onloadend = function(){
      $('.ajax-loading').hide();
  }
于 2012-05-12T12:16:58.347 に答える