0

jar ファイルと Jar ファイルの内容を検証する必要があるという要件があります。

validation of contents of Jarファイルは私のサーブレットで行われ、応答でサーブレットから文字列を取得しています。

サーブレットから生成された応答に基づいて、関数で検証しています。

私のコードは次のようになります

function validateSteps(step) {
    var appctxpath = document.getElementById("appcontextpath").getAttribute("value");
    var isStepValid = true;
    var buttonPress = document.getElementById("buttonClick").value;
    // validate step 1
    if (step == 1) {
    var result = true;
    if(buttonPress != "P")
    {

    var valid = $("#formID").validationEngine('validate');
        //var vars = $("#formID").serialize();
        //alert(valid);
        if (valid == true) {
            //alert("Hi");
            result = true;
        } else {
            result = false;

            $("#formID").validationEngine();
        //return false;

        }
if(result == true)
{
var result;
    var connectorJarFile = document.getElementById("conncetorJar").files[0];
    var formdata = new FormData();
    formdata.append("conncetorJar", connectorJarFile);
    var xhr = new XMLHttpRequest();
    xhr.open("POST",appctxpath+"/ajax/AdminIlantusAppAddStepOne", true);
    xhr.send(formdata);

    xhr.onload = function(e) 
    {
    if (xhr.readyState == 4 && xhr.status == 200) 
    {
        var msg=xhr.responseText;

                 if(msg == "Invalid Jar File"){
                alert("!Invalid jar file");
                document.getElementById('errfn').innerHTML="This is Invalid jar file";
                return false;
             }
            else{
                alert("valid jar");
                document.getElementById('errfn').innerHTML="";
                return true;
            }       

        }
    };
}

メッセージが次の場合はInvalid Jar File、次のページに移動するコントロールを停止する必要があります。そのために私は保管return false;しましたif condition

それでもコントロールは次のページに進みます。この問題を解決するにはどうすればよいですか??

4

1 に答える 1

0

ajax は非同期です。つまり、validateSteps()呼び出しは ajax 成功ハンドラー (false を返そうとする) よりもずっと前に完了します。そのためreturn false、 ajax 成功ハンドラーでは効果がありません。

解決策は、AJAX がすべて有効であると判断した場合にフォームを送信することです。そうでない場合は、フォームを送信しないでください。

        if(msg == "Invalid Jar File"){
            alert("!Invalid jar file");
            document.getElementById('errfn').innerHTML="This is Invalid jar file";
        }
        else{
            alert("valid jar");
            document.getElementById('errfn').innerHTML="";
            $('#formID').submit(); // submit form
        }   

または、必要に応じて送信をリダイレクトに変更します。

于 2013-06-20T10:23:27.520 に答える