如何在typeahead脚本中传递经度和纬度

时间:2018-04-09 17:08:50

标签: javascript ajax geolocation

我有一个在提前输入脚本中创建的值,它可以正常工作,直到我尝试将geo-coords与我的先行项目一起传递。如果我硬编码地理变量它工作正常。我已经将下面的两个VAR示例分解为什么有效,哪些无效。有任何想法吗?请帮助和谢谢

function getLocation() {

    if (navigator.geolocation) {

        navigator.geolocation.getCurrentPosition(showPosition);

    }
}

function showPosition(position) {

    document.getElementById("lat").value = position.coords.latitude;
    document.getElementById("lon").value = position.coords.longitude;

如果我硬编码下面两行代码的值,一切都很好。只是测试值

var lat = 123.123444;
var lon = 100.999999;

但是,如果我执行接下来的两行,我的预先输出的脚本将显示下拉结果,但不会让我选择结果

var lat = position.coords.latitude;
var lon = position.coords.longitude;


}




$(document).ready(function() {

    $('#my_input').typeahead({

        source: function(query, result) {
            $.ajax({
                url: "search_script.php",
                method: "POST",
                data: {
                    query: query
                },
                dataType: "json",
                success: function(data) {
                    result($.map(data, function(item) {
                        return item;

                    }));
                }

            })
        },
        updater: function(item) {
            location.href = 'cart.php?shop_name=' + item + '&latitude=' + lat + '&longitude=' + lon
            return item
        }
    });

  });

</script>

1 个答案:

答案 0 :(得分:0)

将showPosition函数更改为以下内容。我还将变量ID long更改为getlon,因为long是保留字,也将lat更改为getlat。坚持3天

function showPosition(position) {

document.getElementById("getlat").value = position.coords.latitude;
document.getElementById("getlon").value = position.coords.longitude;

lon=document.getElementById("getlon").value;
lat=document.getElementById("getlat").value;

}