2011-12-01 56 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。