【问题标题】:Automatic Ajax request to controller自动向控制器发出 Ajax 请求
【发布时间】:2017-11-20 05:11:13
【问题描述】:

如何在没有点击事件的情况下通过 ajax 向控制器发送一些数据。我的意思是当用户登陆主页时,我想获得他当前的经纬度,我能够得到他/她当前的坐标。但我的问题是我无法将这个经纬度发送到特定的路线,所以我可以根据他当前的坐标搜索最近的酒店。

我的代码:

<script>
if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function (position) {
        console.log(position);
        var lat = position.coords.latitude;//this gives latitude
        var lng = position.coords.longitude;//this gives longitude

        $.ajax({
            url:'http://localhost:8000/coordinates',
            type:'get',
            data:{latitude:lat,longitude:lng},


            success:function(data)
            {
               alert('success');
            }

        });
    });
}

</script>

我的路线

Route::get('/coordinates', 'SearchController@getCoordinate');

控制器:

public function getCoordinate(Request $request){
    return $request->latitude;// i am getting nothing here. i expect to get 
   latitude of user
}

当用户访问网站时,如何在控制器的getCoordinate 函数中获取此坐标。

【问题讨论】:

  • dd($request-&gt;all())首先检查您是否有任何数据。
  • 完成但得到空数组 []
  • 为什么不改变您的 ajax 调用并将参数作为查询字符串传递呢? 'http://localhost:8000/coordinates?latitude='+lat+'&amp;longitude='+lng 然后在你的控制器中,尝试用request()-&gt;all() 检查它(这是一个函数而不是 $request 变量)?我怀疑你可能使用了错误的 Request 类。
  • 谢谢,我会试试的

标签: javascript php jquery laravel geolocation


【解决方案1】:

“没有点击事件”

试试这个

$(document).ready(function(){
  //paste your script here
})

这意味着当文档准备好时 javascript 会运行你的代码

【讨论】:

    【解决方案2】:

    将路线更改为 Route::get('/coordinates', ['uses'=>'SearchController@getCoordinate']);

    【讨论】:

      猜你喜欢
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 2016-03-16
      • 2018-01-25
      • 1970-01-01
      相关资源
      最近更新 更多