0

我有一个要求,我需要验证 jar 文件和 Jar 文件的内容。

validation of contents of Jar文件在我的 servlet 中完成,并且作为响应,我从 servlet 获取字符串。

基于从 servlet 生成的响应,我正在一个函数中对其进行验证。

我的代码看起来像这样

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 falseajax 成功处理程序中没有效果的原因。

如果 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 回答