laravel ajax将多个变量传递给控制器​​?

时间:2017-06-29 11:06:32

标签: ajax laravel laravel-5

我需要将4个变量传递给控制器​​,以便我可以做我想做的事情,但是我收到错误:

  

缺少参数1   应用\ HTTP \控制器\ ProfileController可:: getGoogle()

这是我的控制器:

function getGoogle($lat, $lng, $destinationLat, $destinationLng) {
    print_r($lat);
    print_r($lng);
    print_r($destinationLat);
    print_r($destinationLng);
}

和ajax:

function getDirections(lat, lng, destinationLat, destinationLng) {
    $.ajax({
        url: '/google/',
        type: 'post',
        data: { 
            lat: lat,
            lng: lng,
            destinationLat: destinationLat,
            destinationLng: destinationLng
        },
        dataType: 'json',
        success: function() { alert('hello!'); },
        error: function() { alert('boo!'); },
        headers: {
            'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
        }
    });
}

路线:

Route::post('google/', 'ProfileController@getGoogle');

2 个答案:

答案 0 :(得分:3)

你实际上是在向控制器发送POST变量,但是你在控制器中接受它们作为GET变量,如果你想读取变量,你的控制器应该是这样的:

function getGoogle(Request $request) {
    print_r($request->input('lat'));
    print_r($request->input('lng'));
    print_r($request->input('destinationLat'));
   print_r($request->input('destinationLng'));

}

请务必将请求导入为use Illuminate\Http\Request;

答案 1 :(得分:1)

您没有通过url传递任何参数,而是通过ajax POST参数传递,因此您需要将控制器方法定义更改为

function getGoogle() {
    print_r(Input::get('lat'));
    print_r(Input::get('lng'));
    print_r(Input::get('destinationLat'));
    print_r(Input::get('destinationLng'));
}
相关问题