2011-12-01 3 views
0

Google지도 API를 사용하여 위치를 얻습니다. 나는 주소 필드의 onchange 함수를 사용했다. 그것은 onchange 제대로 작동하고 있습니다. onsubmit 속성을 사용하여 제출하는 동안 함수를 다시 한 번 확인하는 것과 동일한 양식으로 제출할 때 동일한 함수를 사용했습니다. 하지만이 반환을 사용하여 그 반환 때문에이 아약스에서 답변을 얻을 수없는 내가 제출할 수없는 동안 양식은 진정한 대답을 받고 제출 제출하십시오. javascript ajax on submit

것은 하나는 true에서 false로 반환 값이

function validatePlaceForm(){ 

      var frm = document.frmOncampus;  

      var oncampusAddress = frm.oncampusAddress.value; 

      var xmlhttp; 
      if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari 
       xmlhttp=new XMLHttpRequest(); 
      }else{// code for IE6, IE5 
       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.onreadystatechange=function(){ 

      if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
      //document.getElementById("my_div").innerHTML='' 
      var result =xmlhttp.responseText; 
       //alert(result); 
       var both =result.split("|"); 
        frm.oncampusLatitude.value=both[0]; 
        frm.oncampusLongtitude.value=both[1]; 
      } 
      } 
      var url='latlog.php?address='+oncampusAddress; 

      xmlhttp.open("GET",url,true); 
      xmlhttp.send(); 

      return true; 

     } 
+0

주소가 유효한 경우에만 true를 반환하고 그렇지 않으면 false를 반환해야합니다. 자세한 내용은 html 코드를 포함하십시오. –

+4

아마 [jQuery] (http://jquery.com/)를 조사 할 때가 되었습니까? – Blender

+0

jquery에서 시도해도 모두 동일한 문제가 발생합니다. 내 HTML 코드에서 – swamy

답변

0

불행하게도이 작동하지 않습니다 :

xmlhttp.open("GET",url,true); // true means asynchronous 

전화로하면 함수의 결과는 Ajax 요청의 실행에는 결과가 없습니다 비동기 .

그냥 false이 마지막 매개 변수를 변경하려면이 기능을 사용하여 계속하려면

xmlhttp.open("GET", url, false); // will now be synchronous 

또한 지금 onreadystatechange 핸들러 필요하지 않습니다 즉. 이것은 분명히 onchange 이벤트에서 XHR 호출을 동기식으로 만듭니다. 어쩌면 is_synchronous 또는 뭔가에 대한 플래그를 받아들이도록 함수를 사용자 정의하십시오.

브라우저에 응답을 캐시하지 않도록 요청에 타임 스탬프를 추가하는 것도 좋습니다.

0

변화를위한 해결책을 찾아 다음과 같이이 함수를 호출하십시오 onsubmit="return validatePlaceForm();"

이 트릭을 할해야합니다.

+0

나는 이미 false를 반환하고 사용하는 경우 onsubmit = "return validatePlaceForm();을 시도했습니다." 아약스 프로세스가 완료되었지만 양식이 제출되지 않았습니다. – swamy

0

AJAX에서 오는 응답을 확인하십시오. 응답이 비어 있으면 false를 반환하고, 그렇지 않으면 true를 반환합니다. 당신이 XHR을 사용하고있는 방법은 비동기 있기 때문에