ホームページ >ウェブフロントエンド >jsチュートリアル >Prototype.js で AJAX 応答テキストを確実に取得する方法は?

Prototype.js で AJAX 応答テキストを確実に取得する方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-13 22:26:12424ブラウズ

How to Retrieve AJAX Response Text Reliably in Prototype.js?

プロトタイプでの AJAX 応答テキストの取得

プロトタイプベースの AJAX 開発では、応答テキストの取得が困難な場合があります。一般的なアプローチには、次に示すように、onComplete コールバックを利用することが含まれます。

somefunction: function() {
  var result = "";

  myAjax = new Ajax.Request(postUrl, {
    method: 'post',
    postBody: postData,
    contentType: 'application/x-www-form-urlencoded',
    onComplete: function(transport) {
      if (200 == transport.status) {
        result = transport.responseText;
      }
    }
  });

  return result;
}

ただし、このアプローチでは、AJAX リクエストの非同期の性質により、空の結果変数が得られることがよくあります。 onComplete コールバックは、somefunction の完了後に呼び出されるため、タイミングの不一致が発生します。

この問題に対処するには、コールバック関数をパラメータとして somefunction に渡す必要があります。このコールバックは、以下の修正されたコードに示すように、AJAX 操作が完了すると実行されます。

somefunction: function(callback){
  var result = "";
  myAjax = new Ajax.Request(postUrl, {
    method: 'post',
    postBody: postData,
    contentType: 'application/x-www-form-urlencoded',
    onComplete: function(transport){
      if (200 == transport.status) {
        result = transport.responseText;
        callback(result);
      }
    }
  });

}
somefunction(function(result){
  alert(result);
});

このシナリオでは、コールバック関数が onComplete ハンドラー内で呼び出され、応答テキストが利用可能であることが保証されます。 main関数が完了したとき。渡されたコールバックは、その後の処理に応答テキストを使用できます。

以上がPrototype.js で AJAX 応答テキストを確実に取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。