Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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
Javascript 如何将数组从视图传递到控制器?使用Laravel_Javascript_Arrays_Laravel_View_Controller - Fatal编程技术网

Javascript 如何将数组从视图传递到控制器?使用Laravel

Javascript 如何将数组从视图传递到控制器?使用Laravel,javascript,arrays,laravel,view,controller,Javascript,Arrays,Laravel,View,Controller,我有一个无法解决的问题已经好几天了 我的视图中应该有一个javascript/ajax/jQuery函数,它可以创建一个数组,并使用路径“/modulos/contas\u ti/gerar\u protocolo”将用户发送到一个新页面 以下是我的javascript: function check() { // I don't know how many numbers I will have in my array. // It will be dinamic. Can b

我有一个无法解决的问题已经好几天了

我的视图中应该有一个javascript/ajax/jQuery函数,它可以创建一个数组,并使用路径“/modulos/contas\u ti/gerar\u protocolo”将用户发送到一个新页面

以下是我的javascript:

function check() {
    // I don't know how many numbers I will have in my array.
    // It will be dinamic. Can be [1, 2] or [1, 4, 5, 6] or anything else.
    var array = [1, 2];

    // I would like to pass 'array' in the URL below as parameter
    window.location.href = "{{URL::to('/modulos/contas_ti/gerar_protocolo')}}"
}
我的路线:

// Maybe pass the array at the end of 'gerar_protocolo'? 
// Like 'gerar_protocolo[]=' ?

Route::get('/modulos/contas_ti/gerar_protocolo', 'ContasTI\ContasTIController@gerarProtocolo');
我的控制器:

// How to pass the array as parameter inside ()? I also need to 
// pass the array to the new view using 'with', right? 
// Like with->('datas', $data);

public function gerarProtocolo() {
    return view('modulos.contas-ti.gerar_protocolo');
}

您可以将其作为请求参数发送

function check() {
    var array = [1, 2];

    window.location.href = "{{URL::to('/modulos/contas_ti/gerar_protocolo')}}" + "?array[]=1&array[]=2";
}
控制器:

public function gerarProtocolo(Request $request) {
    $data = request('array');
    return view('modulos.contas-ti.gerar_protocolo', compact('data'));
}

更好的方法是,创建一个带有隐藏变量的表单,而不是调用javascript check()函数,将数组值存储在隐藏变量中,然后使用javascript form.submit()方法。

函数check(){
var数组=[1,2,n];
var myArray=encodeURIComponent(JSON.stringify(array));
window.location.href=“{{URL::to('/modulos/contas_ti/gerar_protocolo')}”+“?array=“+myArray;
}

控制器:

public function gerarProtocolo(Request $request) {
    $data = request('array');
    return view('modulos.contas-ti.gerar_protocolo', compact('data'));
}
公共函数gerarProtocolo(){ $data=request->json()->('array'); 返回视图('modulos.contas ti.gerar_protocolo',压缩('data');
}

您可以使用
json.stringify()
将数组转换为json:

因此,您可以将url格式为:
'example.com/api?json_data='+json_data
因此,在控制器中,只需调用:

$data = request()->get('json_data');
$data_array = json_decode($data, true); //converts to array
return view('modulos.contas-ti.gerar_protocolo', compact('data_array'));

在您看来,变量
$data\u array
将可供使用。

您好,Misa。非常感谢。问题是我不知道我的数组会有多少个数字。这将是迪纳米克。我现在在帖子中添加了这个obs。这可能有助于我通过修改数组参数来获得它。你好,Misa!成功了,我做了一些改变,成功了!非常感谢你!