私は初心者から中級のJavaScript/jQueryプログラマーですので、具体的な/実行可能な例が非常に高く評価されます。jQuery AJAX結果またはJSONコンテンツに基づいたJSONレスポンスの処理AJAXポーリング
マイプロジェクトDOMに追加されるコンテンツ、またはメッセージのいずれかを含むJSONを返すURLポーリングするAJAXを使用する必要が{「ステータス」を「保留」}バックエンドがまだ生成に取り組んでいることを示しますコンテンツのJSONレスポンスアイデアは、URLへの最初のリクエストでバックエンドがJSONレスポンス(キャッシュされます)の構築を開始し、その後のコールでこのJSONが準備ができているかどうかを確認します。 。私のスクリプトで
は、私は午前1時30分まで15秒間隔でこのURLをポーリングする必要があり、次の操作を行います
- エラーでAJAX要求の結果であれば、スクリプトを終了。
- AJAXリクエストが成功し、JSONコンテンツに{"status": "pending"}が含まれている場合は、ポーリングを続けます。
- 成功でAJAXリクエストをもたらす場合、およびJSONコンテンツが利用可能なコンテンツ({「ステータス」:「保留」}以外即ち有効な応答)が含まれ、その内容を表示し、ポーリングを停止し、スクリプトを終了します。
私はいくつかのアプローチを試してみましたが、成功は限られていましたが、彼らは必要以上に厄介な感覚を持っています。
// make the AJAX request
function ajax_request() {
$.ajax({
url: JSON_URL, // JSON_URL is a global variable
dataType: 'json',
error: function(xhr_data) {
// terminate the script
},
success: function(xhr_data) {
if (xhr_data.status == 'pending') {
// continue polling
} else {
success(xhr_data);
}
},
contentType: 'application/json'
});
}
ただし、この機能は現在、それがない限り何もしません:ここで私は、私はJSONレスポンスから使用可能なコンテンツを取得する場合にその仕事をして一度に一つのAJAX要求を、作るために成功して使用しました骨格機能です使用可能なコンテンツを含む有効なJSON応答を受け取ります。
私はちょうどコメントである行に何をすべきかわかりません。私は別の関数がポーリングを処理する必要があり、必要に応じてajax _
のrequest()を呼び出すと思われますが、Ajaxの最も洗練された方法はわかりません_
request()はその結果をポーリング関数に返信して応答できます適切に。
ご協力いただきありがとうございます。それ以上の情報を提供できるかどうか教えてください。ありがとう!
おかげで、ジョエルのために
!これは私のために働いた - 私はそれを感謝します。 – Bungle
setTimeout()は、遅延期間中に残りのスクリプトの実行をブロックしますか? –
いいえ、 'setTimeout()'は将来コードブロックを実行するための時間間隔を指定します。残りのスクリプトは、タイムアウトが満了してコードが実行されたときにのみブロックされます。 – Joel