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

时间:2018-06-25 21:58:52

标签: php laravel

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

home.blade

 <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,  
  ));
  }

1 个答案:

答案 0 :(得分:0)

如果您要开发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',
    ];
}