2011-12-01 67 views
0

我正在使用谷歌地图API获取位置。我已经使用了地址字段的变化下面的函数。它正在正常工作。在使用onsubmit属性提交时,我使用同样的形式提交了相同的函数来再次检查函数。但提交时,我无法从这个Ajax获得答案,因为使用此返回返回真正的形式提交与p得到答案。javascript ajax上提交

请任何一个找到这个

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中也都有同样的问题。 – swamy

回答

0

不幸的是这不会有任何效果,因为你使用XHR的方式有异步:

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();” ajax过程完成但表单未提交 – swamy

0

检查来自AJAX的响应。如果响应为空,则返回false,否则返回true。