1

私は以下の機能を持っています。関数で成功、エラー、完了の値を返すにはどうすればよいですか?

function checkstatus() {
  $.ajax({
    url: "foo.json",
    beforeSend : function(jqXHR, settings) {
      console.info('in beforeSend');
      console.log(jqXHR, settings);
    },
    error : function(jqXHR, textStatus, errorThrown) {
      alert(" 500  data still loading"+ jqXHR +  " : " + textStatus +  " : " + errorThrown);
      console.info('in error');
      console.log(jqXHR, textStatus, errorThrown);
    },
    complete : function(jqXHR, textStatus) {
      alert(" complete "+ jqXHR +  " : " + textStatus);
      console.info('in complete');
      console.log(jqXHR, textStatus);
    },
    success: function(data, textStatus, jqXHR){
      alert(" success "+ jqXHR +  " : " + textStatus);
      console.info('in success');
      console.log(data, textStatus, jqXHR);
    }
  });
}
4

2 に答える 2

0

次のようなものを試してください:

function checkstatus( callback ) {
   $.ajax({
    .......
    success: function(data, textStatus, jqXHR){
        callback(data);
    }
   });
}
//and callback
checkstatus(function (data) {    
    alert(data);
});
于 2012-12-03T04:22:58.187 に答える
0

呼び出しの後のコード (戻る場所) がajax コールバックの.ajaxに実行されるため、非同期要求で別の関数から値を返すことはできません。代わりに、コールバックへの依存関係を作成する必要があります。

リクエストが同期の場合は、次のようにできます。

function checkStatus() {
   var statuses = [];
   $.ajax(...
      success: function (data, textStatus, jqXHR) {
          statuses.push(textStatus);
      }
   ...

   return statuses;
}
于 2012-12-03T04:25:02.020 に答える