2013-06-20 3 views
0

У меня есть требование, когда мне нужно проверить файл jar и содержимое файла Jar.как вернуть ответ ajax в функции

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.

Все еще элемент управления переходит на следующую страницу. что я должен сделать, чтобы решить эту проблему?

+0

Вы проверили, действительно ли верное сообщение действительно возвращено? Появляется ли предупреждение? – Owl

+0

Поскольку ajax по умолчанию асинхронный, он не ожидает ответа на следующую страницу или нет. Затем вы должны реализовать эту логику внутри функции обратного вызова ajax. Но подождите, я не вижу никакой логики, чтобы перейти или перейти на следующую страницу. Вы также должны опубликовать эту соответствующую часть –

+0

@kaktus Спасибо за ответ, Да Показывает предупреждение – Saha

ответ

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 
     } 

Или изменить подчинение редирект, если это то, что вы хотите ,

+0

Пробовал это ... но я получил тот же результат – Saha

+0

Где вы перешли на следующую страницу? Вам нужно удалить это. – MrCode

Смежные вопросы