0

我有一个包含名称、经度和纬度文本字段的 html 表单。经度和纬度存储在 javascript 变量中。您知道如何将名称、纬度和经度发布到服务器,我的意思是通过 url 吗?每次我提交表单时,经度和纬度都没有传递到网址中?谁能告诉我该怎么做?

谢谢

这是我的 javascript 和 html 代码:

    if (navigator.geolocation) {
    var geolocation = {};
    geolocation.latitude = 0;
    geolocation.longitude = 0;
    navigator.geolocation.getCurrentPosition(function (p) {
    geolocation.latitude = p.coords.latitude;
    geolocation.longitude = p.coords.longitude;           
    }, function (error) {
    alert("Failed to get GPS location");
    });
    } else {
    alert("Failed to get GPS working");
    }

    function loc() {
    document.getElementById("longitude").value = geolocation.latitude;
    document.getElementById("latitude").value = geolocation.longitude;

    }

html:

    <form name="photo" method="post" action="url">
    <label for="name">Name:</label>
    <input type="text" name="name" id="Text1" value="" />
    <label for="longitude">Longitude:</label>
    <input type="text" name="longitude" id="longitude" />
    <label for="latitude">Latitude:</label>
    <input type="text" name="latitude" id="latitude" />
    <label for="image">Image:</label>
    <input type="text" name="image" id="image" />
    <input type="submit" value="Submit" />
    </form>
4

2 回答 2

0

您可以在表单中添加元素...

var myForm = document.getElementById('myForm');

var longitude = document.createElement('input');
longitude.name= 'longitude';
longitude.value = '100';

var latitude= document.createElement('input');
latitude.name= 'latitude';
latitude.value = '100';

myForm.appendChild(longitude);
myForm.appendChild(latitude);
于 2013-02-26T11:28:21.403 回答
0

在表单的操作中,您需要提及要调用的 servlet 的名称。利用三个隐藏字段来存储值名称、经度和纬度。这可以使用

document.getElementById('hiddenFieldId1').value=longitude; document.getElementById('hiddenFieldId2').value=latitude; document.getElementById('hiddenFieldId3').value=name;

这些值可以在 servlet 中使用request.getParameter('hiddenFieldId');

您需要在您的js中提交表单:

document.myform.submit();

geolocation变量尚未成为全局变量,因此未在您的函数中定义loc()geolocation.latitude和没有赋值geolocation.longitude

于 2013-02-26T11:31:57.467 回答