如何使用 axios 将数组从 javascript 传递到 laravel 控制器
How to pass arrays from javascript to laravel controller using axios
我正在使用 Laravel 5.4 并且我正在使用 Vue 2 处理我的数据。我正在尝试使用 axios 调用控制器方法,但我找不到传递两个数组的正确方法.我需要将它们发送到我的控制器,以便向它们发出一些数据库请求并取回一些数据。
我已经设法将数组作为字符串传递,如下所示,但是,我不希望在我的控制器上将字符串转换为数组。
有没有办法做与我在下面做的相同的事情,但将数组作为数组而不是字符串传递,或者这是不可能的吗?
Axios 在 Vue 上调用:
$rutas = ["01", "02"];
$tipos = ["01", "03", "04"];
var params = new URLSearchParams();
params.append("rutas", $rutas);
params.append("tipos", $tipos);
var request = {
params: params
};
axios.get('/test/', request);
这是我的路线
Route::get('/test/', 'TestsController@getClientesPorRuta');
这是我的控制器的方法:
public function getClientesPorRuta(Request $request) {
$rutas = $request->input('rutas');
$tipos = $request->input('tipos');
// Code like this doesn't work
$index = 0;
$register = Ruta::where('CODIRUTA','=',$rutas[$index])->first();
}
实际上您不必将该数组转换为字符串来执行此操作..您可以直接传递它..
var request = {
rutas: $rutas,
tipos: $tipos,
};
axios.post('/test/', request);
使用 axios.post 而不是 axios.get .. 因为 get 方法使用 url 来传递数据.. 而 url 不能包含数组,它正在转换它串成 1,2
同样在您的路线中,您应该将 Route::get 更改为 Route::post
Route::post('/test/', 'TestsController@getClientesPorRuta');
然后在您的 php $request->rutas
中已经设置为 ["01", "02"]
我正在使用 Laravel 5.4 并且我正在使用 Vue 2 处理我的数据。我正在尝试使用 axios 调用控制器方法,但我找不到传递两个数组的正确方法.我需要将它们发送到我的控制器,以便向它们发出一些数据库请求并取回一些数据。
我已经设法将数组作为字符串传递,如下所示,但是,我不希望在我的控制器上将字符串转换为数组。
有没有办法做与我在下面做的相同的事情,但将数组作为数组而不是字符串传递,或者这是不可能的吗?
Axios 在 Vue 上调用:
$rutas = ["01", "02"];
$tipos = ["01", "03", "04"];
var params = new URLSearchParams();
params.append("rutas", $rutas);
params.append("tipos", $tipos);
var request = {
params: params
};
axios.get('/test/', request);
这是我的路线
Route::get('/test/', 'TestsController@getClientesPorRuta');
这是我的控制器的方法:
public function getClientesPorRuta(Request $request) {
$rutas = $request->input('rutas');
$tipos = $request->input('tipos');
// Code like this doesn't work
$index = 0;
$register = Ruta::where('CODIRUTA','=',$rutas[$index])->first();
}
实际上您不必将该数组转换为字符串来执行此操作..您可以直接传递它..
var request = {
rutas: $rutas,
tipos: $tipos,
};
axios.post('/test/', request);
使用 axios.post 而不是 axios.get .. 因为 get 方法使用 url 来传递数据.. 而 url 不能包含数组,它正在转换它串成 1,2
同样在您的路线中,您应该将 Route::get 更改为 Route::post
Route::post('/test/', 'TestsController@getClientesPorRuta');
然后在您的 php $request->rutas
中已经设置为 ["01", "02"]