Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php提交之前使用JavaScript填写隐藏输入_Php_Javascript_Html - Fatal编程技术网

在php提交之前使用JavaScript填写隐藏输入

在php提交之前使用JavaScript填写隐藏输入,php,javascript,html,Php,Javascript,Html,我在表单上有一个提交按钮,上面写着: <input type="submit" name="add_submit" onclick="return getCoord()" value="Add Location" /> 我希望JS函数在表单提交之前填写long和lat字段的值;然后在phppost上,我想获取输入字段——但它返回空白。是否有打字错误和逻辑问题 注意:我确认地址正确地记录在JS控制台中 编辑:我实际上得到了一个DB查询失败错误,但结果似乎是空白longlat条目。这些

我在表单上有一个提交按钮,上面写着:

<input type="submit" name="add_submit" onclick="return getCoord()" value="Add Location" />
我希望JS函数在表单提交之前填写
long
lat
字段的值;然后在
php
post上,我想获取输入字段——但它返回空白。是否有打字错误和逻辑问题

注意:我确认地址正确地记录在JS控制台中


编辑:我实际上得到了一个DB查询失败错误,但结果似乎是空白
long
lat
条目。这些坐标被放入数据库。

谷歌API地图是异步的,所以在它完成之前,您已经提交了表单。在服务器上执行此操作或尝试使用Observer

编辑

var geopleted=false;
函数getCoord(){
地址=document.getElementById('street')。值+“”+document.getElementById('city')。值+“”+document.getElementById('state')。值+“”+document.getElementById('zip')。值;
控制台日志(地址);
var geocoder=new google.maps.geocoder();
geocoder.geocode({'address':address},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
var latitude=results[0]。geometry.location.lat();
var longitude=results[0]。geometry.location.lng();
document.getElementById('lat')。值=纬度;
document.getElementById('long')。值=经度;
geoCompleted=true
$('#表单id')。提交();
} 
});
返回已完成
} 

@woofmeow我删除了它并得到了相同的结果。请尝试在服务器端(使用服务器端api)获取坐标,或者在地理编码完成之前阻止用户提交表单。@Musa可能只是一个自动JavaScript观察函数,在填写完所有相应字段后获取坐标?(地址填写完成后才能提交表单)顺便说一句,onclick不会被调用,始终使用onsubmit@woofmeow这个值不是在这里设置的吗<代码>文档.getElementById('lat')。值=纬度;document.getElementById('long')。值=经度
<input id="long" name="long" type="hidden"  value=""  />
<input id="lat" name="lat" type="hidden"  value="" />
<script type="text/javascript">
    function getCoord() {

        address = document.getElementById('street').value + " " + document.getElementById('city').value + " " + document.getElementById('state').value + " " + document.getElementById('zip').value;
        console.log(address);
        var geocoder = new google.maps.Geocoder();

        geocoder.geocode( { 'address': address}, function(results, status) {

            if (status == google.maps.GeocoderStatus.OK) {
                var latitude = results[0].geometry.location.lat();
                var longitude = results[0].geometry.location.lng();

                document.getElementById('lat').value = latitude;
                document.getElementById('long').value = longitude;


            } 
        });

    } 
</script>
        $new_long = $database -> escape_value($_POST['long']);
        $new_lat = $database -> escape_value($_POST['lat']);