2014-08-28 79 views
0

我正在使用以下代碼來查找瀏覽器位置並將其發佈到下一頁,但問題在於JavaScript花費很少的時間來查找瀏覽器位置並且表單正在發佈之前瀏覽器位置被找到了,我怎麼才能讓表單提交後才能找到瀏覽器位置?JavaScript檢查值是否退出,然後提交表單

newtest1.php

<html> 
<head> 
<script> 
function getLocation() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(showPosition); 
    } 
} 
function showPosition(position) { 
    document.getElementById("getlat").value = position.coords.latitude; 
    document.getElementById("getlon").value = position.coords.longitude; 
} 
getLocation(); 
</script> 
</head> 
<body> 
<form id="myForm" method="post" action="newtest2.php"> 
<input type="text" id="getlat" name="getlat" /> 
<input type="text" id="getlon" name="getlon" /> 
<input type="button" name="myformer" onclick="myFunction();" /> 
</form> 
<script> 
function myFunction() { 
    document.getElementById("myForm").submit(); 
} 
myFunction(); 
</script> 
</body> 
</html> 

newtest2.php

<?php 
echo $_POST['getlat']; 
echo $_POST['getlon']; 
?> 
+0

你爲什麼要對這個問題提出一點問題? http://stackoverflow.com/questions/25539213/passing-values-from-javascript-to-php-using-ajax – 2014-08-28 01:56:49

+0

@PrabowoMurti - 如果你閱讀這兩個問題,你會明白代碼是相同的,但問題是不同。 – lock 2014-08-28 02:01:03

+0

你總是可以編輯和改進你以前的問題 – 2014-08-28 02:02:11

回答

1

你可以把默認禁用提交按鈕和刪除情況下的位置被成功發現了禁用屬性。因此,您在發現職位之前阻止提交表單。 但更好的方法是僅僅通過按鈕來觸發計算並等待成功響應,並且如果需要的話使用lan和lon值做ajax請求,或者只是在沒有任何重新加載的情況下操縱dom來顯示位置。如果你的php腳本只是打印通過javascript發送的變量,那麼不需要php腳本。只需使用javascript在html頁面上打印變量值即可。

0

geolocation.getCurrentPosition是異步的,所以如果你想等待事情完成時發生,你應該把這些東西放在回調函數 - showPosition()你的情況。

你將不得不重寫你有一點點,你不應該打電話給你提交自動功能,我想你只需要它時,提交表單:

function myFunction() { 
    document.getElementById("myForm").submit(); 
} 

function getLocation() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(showPosition); 
    } 
} 

function showPosition(position) { 
    document.getElementById("getlat").value = position.coords.latitude; 
    document.getElementById("getlon").value = position.coords.longitude; 

    // now submit the form as the position has been determined 
    myFunction(); 
} 

$('#myForm').on('submit', function(e) { 
    e.preventDefault(); 
    getLocation(); 
}); 

你或許可以打掃一下有一點,你用jQuery標記了你的問題,但你似乎並沒有使用它,你的函數名和內聯事件處理程序可以被改進/刪除。

0

根據您發佈的代碼和您的問題,我認爲這裏最簡單的方法是等待DOM完成後,表單將不會提交,直到有人點擊按鈕,因爲onclick。我建議你將代碼包裝到document ready