2014-08-28 59 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