0

ユーザーが入力して送信ボタンをクリックするフォームがあります。データはサーバーに送り返され、サーバーのサーバーの応答に基づいて、フォームが送信されるかどうか (およびページがリダイレクトされるかどうか) が決まります。問題は、フォームが常に送信され、サーバーの応答が受信される前にページがリダイレクトされることです。

        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 を必要としませんでした。もし必要でなければ、今から使い始めたくありません。

4

1 に答える 1

1

<button>フォームを送信しないを使用します(タイプは ではありません"submit"):

<form ...>
...
<button onclick="SubmitForm(...)">Submit</button>
</form>

の最後にSubmitForm、次のように記述できます。

document.querySelector("form").submit();

フォームを送信したいとき。

于 2013-04-08T20:52:56.290 に答える