ユーザーが入力して送信ボタンをクリックするフォームがあります。データはサーバーに送り返され、サーバーのサーバーの応答に基づいて、フォームが送信されるかどうか (およびページがリダイレクトされるかどうか) が決まります。問題は、フォームが常に送信され、サーバーの応答が受信される前にページがリダイレクトされることです。
function SubmitForm(name, data1)
{
var result;
var checkResult = function(result)
{
alert("final value is: "+result)
return result
}
var xmlhttp
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
if(xmlhttp.responseText)
{
result = true
}
else
{
document.getElementById("report").innerHTML = "blah blah blah"
result = false
}
checkResult(result)
}
}
xmlhttp.open("POST", "Checkdata1.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
xmlhttp.send("name="+encodeURIComponent(name.value)+"&data1="+encodeURIComponent(data1.value))
//return false
}
上記の JavaScript 関数を呼び出すフォームの HTML は次のとおりです。
<form onsubmit="return isPasswordCorrect(document.getElementById('name'), document.getElementById('txtField1'))" action="nextpage.php" method="GET">
フォームが送信されないようにするために関数が返されるという考えは知ってfalse
いますが、サーバーが Ajax を介して応答するのに十分な時間待機させるにはどうすればよいでしょうか? ところで、私は JQuery を必要としませんでした。もし必要でなければ、今から使い始めたくありません。