我需要将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');
答案 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'));
}