如何在函数中返回ajax响应

时间:2013-06-20 10:06:06

标签: java jquery ajax

我需要验证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

控件仍然转到下一页。我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分: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
        }   

如果这是您想要的,请将提交更改为重定向。