Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用axios将数组从javascript传递到laravel控制器_Javascript_Arrays_Laravel_Vue.js_Axios - Fatal编程技术网

如何使用axios将数组从javascript传递到laravel控制器

如何使用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"

我使用的是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

此外,在路线中,您应该更改路线::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)因为你发布了你的答案。我不会改变它。