2014-08-28 3 views
0

다음 코드를 사용하여 브라우저 위치를 찾고 다음 페이지에 게시하지만 브라우저 위치 및 양식을 찾기 위해 시간이 조금 걸립니다. 브라우저 위치를 찾은 후에 양식을 제출하려면 어떻게해야합니까?값을 끝내고 양식을 제출하면 JavaScript가 확인됩니다.

newtest1.php

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

왜이 질문과 조금 다른 질문을하고 계십니까? http://stackoverflow.com/questions/25539213/passing-values-from-javascript-to-php-using-ajax –

+0

@PrabowoMurti - 두 질문을 모두 읽으 셨다면 코드는 동일하지만 질문은 이해할 수 있습니다. 다른. – lock

+0

항상 이전 질문을 편집하고 개선 할 수 있습니다. –

답변

1

당신은 기본적으로 사용하지 않도록 설정 버튼을 제출하고 위치가 성공적으로 발견 된 경우에는 비활성화 속성을 제거 할 수

<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. 그래서 당신은 위치가 발견되기 전에 양식이 제출되는 것을 막습니다. 하지만 더 좋은 방법은 단추로 계산을 시작하고 성공 응답을 기다리는 것입니다. 필요한 경우 lan 및 lon 값을 사용하여 AJAX 요청을 수행하거나 DOM을 조작하여 다시로드하지 않고 위치를 표시합니다. 귀하의 PHP 스크립트가 자바 스크립트로 보내는 변수를 인쇄하는 경우 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에 코드를 래핑하는 것이 좋습니다.

관련 문제