如何将从地理位置获得的城市与我的数据库中存储的城市进行比较,如果城市存在,则通过 ajax 请求传递 id?

Posted

技术标签:

【中文标题】如何将从地理位置获得的城市与我的数据库中存储的城市进行比较,如果城市存在,则通过 ajax 请求传递 id?【英文标题】:How to compare city obtained from geolocation with stored cities in my database and if city exists pass the id through ajax request? 【发布时间】:2018-07-12 19:06:38 【问题描述】:

我的脚本是

<script type="text/javascript">
   search = new Vue(
     el: '#offers',
     data: 
        data: [],
        authType: 'uid',
        key : '1',
        with_ : 'district',
    ,

mounted()  
 var self = this; 
    navigator.geolocation.getCurrentPosition( success, error );
    data = ;
    data['auth-token'] = this.authType;
    data['key'] = this.key;
    data['with_'] = this.with_;

            function success( position ) /* geolocation success callback */
                var GEOCODING = 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' + position.coords.latitude + '%2C' + position.coords.longitude + '&language=en';
                $.getJSON( GEOCODING ).done( function( location ) 

                    $('#country').html(location.results[0].address_components[5].long_name);
                    $('#state').html(location.results[0].address_components[4].long_name);
                    $('#city').html(location.results[0].address_components[2].long_name);
                    $('#address').html(location.results[0].formatted_address);
                    $('#latitude').html(position.coords.latitude);
                    $('#longitude').html(position.coords.longitude);


    data['city'] = location.results[0].address_components[2].long_name;

 $.ajax( 
    url: "http://127.0.0.1:8000/alpha/get/", 
    data: data,
    type: "POST",
    dataType: 'json', 
    success: function (e)  
      if (e.status == 1)  

      
    ,
  );
  $.ajax(
        url: "http://127.0.0.1:8000/city/",
        method: "GET",
        dataType: "JSON",
        success: function(e) 
            if (e.status == 1)  
              self.cities = e.data;
            
          ,
     );
   );
      
  ,
);
</script>

现在有了data['city'],我正在通过地理定位获得的城市。但是我需要与通过ajax请求http://127.0.0.1:8000/city/获取的城市列表进行比较,并将对应的id发送为data['city']而不是name。 我得到获取城市列表的 json 响应

 "status": true, "data": ["id": 1, "name": "Palakkad", "id": 2, "name": "kochi"]`

我需要将geolocation获得的城市与上面的列表进行比较,如果城市存在,我需要传递对应的ID为data['city']

请帮助我找到相同的解决方案。我的js很弱,这是我的第一个项目。我是初学者。请帮我提供一个解决方案?

【问题讨论】:

你对data的大部分使用应该是this.data 【参考方案1】:

如果我理解正确,给定一个包含城市数据和城市名称的对象,您想从城市数据中获取匹配的城市 ID(如果有匹配项)。下面的功能应该适合你。

它通过cities.data 查找名称匹配的条目。如果找到,则返回id,否则返回null

const cities = "status": true, "data": ["id": 1, "name": "Palakkad", "id": 2, "name": "kochi"];
const cityName = 'Palakkad';

function findCity(name) 
  const foundCity = cities.data.find(entry => entry.name === name);
  
  return foundCity ? foundCity.id : null;


console.log(findCity(cityName));
console.log(findCity('Houston'));

【讨论】:

以上是关于如何将从地理位置获得的城市与我的数据库中存储的城市进行比较,如果城市存在,则通过 ajax 请求传递 id?的主要内容,如果未能解决你的问题,请参考以下文章

如何获得当前职位的城市名称?

寻找位置 API (c#)

如何在iphone中获取地理位置城市名称?

我如何获得某些国家/地区的城市列表?

如何将全球所有地理位置存储在数据库中?

如何从颤动的坐标中获取城市?