jQueryのUIダイアログを使用して、画面にダイアログ(my-ui-dialog
)を描画し、ユーザーにいくつか<input>
のsやその他のコントロールを表示しています。ユーザーがダイアログの[ OK ]ボタンをクリックしたときに、UIダイアログでサーバーにAJAX / JSONメッセージを送信し(を介してgetJSON
)、サーバーがその呼び出しを処理できるようにし、サーバーからの応答を受信した後でダイアログを閉じます。window.location
次に、ユーザーは(経由で)別のWebページにリダイレクトされる必要があります。
これが私のコードです:
$("#my-ui-dialog").dialog({
modal: true,
autoOpen: false,
height: 255,
width: 300,
buttons: {
"OK" : function() {
var f = $("#fizz").val();
$.getJSON(
"/myserver/do-something",
{
fizz: f
},
function() {
$("#my-ui-dialog").dialog('destroy');
}
);
// When I leave this in the code works great.
// When I comment the alert out, the getJSON call never
// hits the server-side.
alert("Returned from the backend...");
window.location = "/myserver/some-other-url"
$(this).dialog("close");
},
Cancel : function() {
$(this).dialog("close");
}
}
});
そのalert
ボックスをそのままにして、(アラートボックスが画面に表示された状態で)数秒待つと、getJSON
メソッドはサーバーにアクセスして戻るのに十分な時間があるようです。しかし、私がコメントアウトした場合alert
、リクエストはサーバーにヒットすることさえありません。これは、でリッスンしているハンドラーの先頭にログメッセージを追加することでわかります/myserver/do-something
。これもJavaWebアプリであり、Tomcatがリクエストを受信したという証拠は見られません。またHTTP
、Firebugを使用してデバッグするときにリクエストが生成されていることもわかりません。これらの3つすべては、要求がサーバーにまったくヒットしていないことを示しています。
ここでの私のオプションは何ですか?jQueryを数秒間スリープさせることはできますか?それは醜い解決策のように感じます。jQuery APIを使用するためのより良い方法があるはずです...事前に感謝します!