繁体   English   中英

laravel如何使用ajax获取两点之间的距离

[英]laravel How to get distance between two points using ajax

我已经在控制器中正常工作的代码进行了测试,但是现在我想使用ajax从用户输入向控制器发送值,以计算该值和固定值之间的距离。 我认为我的Ajax代码有问题,我不知道请帮助我让此代码有效

刀片

 <input type="text" id="postal_code" onFocus="geolocate()">
<input type="text" id="totaldistance"  onFocus="geolocate()">
<button id="save_address">Save</button>

jQuery的

 <script>
 $(document).on('click', '#save_address', function(e){
  $.ajax({
        type: 'POST',
        url: '/Get_distance',
        data: {
            '_token': $('input[name=_token]').val(),
            'currentadd': $('#postal_code').val(), 
        },
        success: function(data) {

          alert('success');
   ('#totaldistance').val(data.distance); 
       }
    });
    });
</script>

web.php

 Route::post('/Get_distance','HomeController@getdistance');

控制者

public function getdistance(Request $request)
{

 $currentaddress =$request->currentadd;
 $from = '4429 North Broadway, Chicago, IL, United States';
  $remFrom = str_replace(',', '', $from); //Remove Commas
  $from = urlencode($remFrom);
  $to = $currentaddress;
 $remTo = str_replace(',', '', $to); //Remove Commas
  $to = urlencode($remTo);
  $data = file_get_contents("http://maps.googleapis.com/maps/api/distancematrix/json?origins=$from&destinations=$to&language=en-EN&sensor=false");
  $data = json_decode($data,true);
  $distance = $data['rows'][0]['elements'][0]['distance']['text'];
  return Response::json(array(
'distance' => $distance,  
  ));
  }

如果要开发Rest API,最好不要添加令牌。

如果您使用的是5.45.5 ,则可以使用api.php而不是web.php api.php您不需要在请求后进行令牌验证。

如果您使用的是web.php那么您将放弃令牌。 这是官方文件

从CSRF保护中排除URI

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        'Get_distance',
    ];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM