非同期 JavaScript および XML (AJAX) 応答テキストの取得
プロトタイプベースの AJAX 開発のコンテキストでは、応答テキストを取得すると、チャレンジ。次のコードを考えてみましょう。
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; }
このスニペットでは、「someFunction」が完了してからずっと後に、「onComplete」関数が非同期で実行されます。これにより、空の "result" 変数が生成されます。
これを克服するために、提供された回答で解決策が提案されています。つまり、パラメーターとして "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); });
この場合、「someFunction」はコールバックをパラメータとして受け取り、それを応答テキスト。この例では、コールバック関数は取得したテキストを含むアラートを表示します。このメカニズムにより、必要に応じて後続の関数で応答テキストを利用できるようになります。
以上がPrototype.js で AJAX 応答テキストを同期的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。