コールバック関数を起動する前に、リダイレクトが完了するまで jquery\javascript で待機できるかどうか疑問に思っていました。
私のコードは以下のようになります。投稿がユーザーにログインするためのコールバックまではすべて問題ありません。検証が完了すると、残念ながらその時点でページがリダイレクトされ、投稿リクエストが成功のコールバック関数を起動するため、終了しますリダイレクト先のページではなく、「ページのリダイレクト..」を取得します。
$(document).ready(function(){
$("#submit").click(function(){
var url = "https://domain/login";
$.ajax({
url: url,
type: "GET",
dataType: "html",
success: onGetFormSuccess,
error: function(data) {
alert('failed.');
}
});
});
function onGetFormSuccess(data) {
var url = "https://domain/login";
var parser = new DOMParser();
doc = parser.parseFromString(data, "text/html");
var inputs = doc.getElementById("formid").getElementsByTagName("input");
var params = new Object();
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].name == "user")
params[inputs[i].name] = $("#username").val();
else if (inputs[i].name == "pass")
params[inputs[i].name] = $("#password").val();
else
params[inputs[i].name] = inputs[i].value;
}
$.ajax({
url: url,
type: "POST",
data: params,
success: onLoginSuccess,
error: function(data) {
alert('failed.');
}
});
}
function onLoginSuccess(data) {
alert(data);
}
});