2013-06-20 4 views
0

jar 파일의 유효성을 검사하고 Jar 파일의 내용을 확인해야하는 요구 사항이 있습니다.함수에서 ajax 응답을 반환하는 방법

validation of contents of Jar 파일이 내 서블릿에서 수행되고 응답으로 서블릿에서 문자열을 가져 오는 중입니다.

서블릿에서 생성 된 응답을 기반으로 함수에서 유효성을 검사하고 있습니다. 메시지가 Invalid Jar File 내가 다음 페이지로 이동 제어를 중지해야하는 경우

내 코드는이

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; 
      }  

     } 
    }; 
} 

것 같습니다. 은 return false;if condition에 보관했습니다.

여전히 제어는 다음 페이지로 진행됩니다. 이 문제를 해결하려면 어떻게해야합니까 ??

+0

올바른 메시지가 실제로 반환되었는지 확인 했습니까? 경고가 나타 납니까? – Owl

+0

아약스는 기본적으로 비동기이기 때문에 다음 페이지로 이동할지 여부를 기다리는 중입니다. 그런 다음이 논리를 Ajax 콜백 함수 내에 구현해야합니다. 하지만 잠깐, 나는 거기에 어떤 논리가 보이지 않거나 다음 페이지로 가야한다. 이 관련 부분도 게시해야합니다 –

+0

@kaktus 답장을 보내 주셔서 감사합니다 예 경고 메시지를 표시합니다 – Saha

답변

0

ajax는 asyncrounous입니다. 즉, 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

관련 문제