如何使用axios将数组从javascript传递到laravel控制器
我使用的是Laravel 5.4,我用Vue 2处理数据。我试图使用axios调用控制器方法,但找不到传递两个数组的正确方法。我需要将它们发送到我的控制器,以便使用它们发出一些数据库请求并获取一些数据 我已经成功地将数组作为字符串传递,如下所示,但是,我建议不要将字符串转换为控制器上的数组。 是否有一种方法可以像我下面所做的一样,将数组作为数组而不是字符串传递,或者这是不可能的? Axios在Vue上的调用:如何使用axios将数组从javascript传递到laravel控制器,javascript,arrays,laravel,vue.js,axios,Javascript,Arrays,Laravel,Vue.js,Axios,我使用的是Laravel 5.4,我用Vue 2处理数据。我试图使用axios调用控制器方法,但找不到传递两个数组的正确方法。我需要将它们发送到我的控制器,以便使用它们发出一些数据库请求并获取一些数据 我已经成功地将数组作为字符串传递,如下所示,但是,我建议不要将字符串转换为控制器上的数组。 是否有一种方法可以像我下面所做的一样,将数组作为数组而不是字符串传递,或者这是不可能的? Axios在Vue上的调用: $rutas = ["01", "02"]; $tipos = ["01", "03"
$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
此外,在路线中,您应该更改路线::get to Route::post
Route::post('/test/', 'TestsController@getClientesPorRuta');
然后在您的php中,
$request->rutas
已经设置为[“01”,“02”]
您实际上已经完成了。我的错,axios调用将数组转换为字符串。但是,如果我想使用它,我必须将其转换为数组:$register=Ruta::where('CODIRUTA','=',$rutas[$index])->first()代码>。我仍然需要将其作为数组而不是字符串传递。当然,我可以转换它,但我想知道是否可能。因为你的rutas在我的答案中是一个数组。。可以使用$register=Ruta::其中('CODIRUTA',$rutas)->first()检索Ruta
如果我使用数组[“01”,“02”]
运行该代码,每次我都会得到第一个,我不需要使用id数组($rutas)进行查询。我需要循环$ruta并单独进行查询,以便每次都能得到不同的“ruta”。另外,$request->rutas
不会返回数组[“01”,“02”]
,而是返回字符串“01,02”
。谢谢你的帮助,因为你正在转换它。。使用params.append(“rutas”、$rutas)代码>而不是params.append(“rutas”,$strutas)代码>我正在使用params.append(“rutas”,$rutas)代码>因为你发布了你的答案。我不会改变它。