Мне нужно передать некоторые поля формы в файл Perl, и у меня есть небольшая форма, которая делает трюк.
Теперь я хотел бы добавить 2 поля для широты и долготы с использованием геолокации, но я получаю пробелы для них. Я прочитал его, потому что геолокация асинхронна, но я не могу найти, как ее решить. Я даже добавил несколько советов из других ответов, но я не могу понять это правильно.
Может ли кто-нибудь помочь мне исправить это?
Это мой код:
<html>
<head>
<script type="text/javascript">
var lati =0;
var longi =0;
function getPosition(position)
{
lati = position.coords.latitude;
longi = position.coords.longitude;
form.latitude.value = lati;
form.longitude.value = longi;
}
function writeLati(form)
{
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(getPosition);
} else {
form.latitude.value = "3";
form.longitude.value = "5";
document.write("Your browser can't do geolocation.");
}
}
</script>
</head>
<body BGCOLOR="#FFFFFF" onLoad="writeLati(locform)">
<H1>Page Title</H1>
<FORM name="locform" ACTION=../cgi-bin/rally.pl METHOD=POST>
Car Number:
<INPUT TYPE="TEXT" NAME="Number" LENGTH=2 />
<INPUT TYPE="HIDDEN" NAME="Stage" VALUE=0 />
<input type="HIDDEN" name="latitude" />
<input type="HIDDEN" name="longitude"/>
<P>
<INPUT TYPE=SUBMIT VALUE="Send">
</FORM>
</body>
Насколько я могу судить, проблема - это просто некоторые ошибки JavaScript.
Начиная с <body BGCOLOR="#FFFFFF" onLoad="writeLati(locform)">
locform
не существует. Вам нужно использовать что-то вроде document.getElementById
чтобы получить то, что вы ожидаете отсюда. (Чтобы использовать getElementById, вам нужно указать идентификатор в своей форме).
Также в function getPosition(position)
Вы пытаетесь назначить form.latitude.value
, однако form
- это локальная переменная в function writeLati
к которой здесь нельзя получить доступ.
Это помогло мне решить эти проблемы.