プロトタイプでの 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 サイトの他の関連記事を参照してください。