简体   繁体   English

如何将2个JavaScript数组从laravel视图传递到laravel控制器?

[英]How to pass 2 javascript arrays from laravel view to laravel controller?

so I want to make cooking recipes search system. 所以我想做饭食谱搜索系统。 User can select ingredients, which should be in the recipe and also he can choose ingredients, which should not be in the recipe. 用户可以选择配方中应该包含的成分,也可以选择配方中不应该包含的成分。 I have 2 dropdown menus, in which user chooses the ingredient, and it is being shown on the screen by javascript. 我有2个下拉菜单,用户可以在其中选择成分,并且javascript会在屏幕上显示该成分。 So after user chooses all ingredients, he presses "search" and my controller should receive all the chosen ingredients and unwanted ingredients, so I can make query. 因此,在用户选择所有成分之后,他按“搜索”,我的控制器应接收所有选择的成分和不需要的成分,以便我进行查询。 Here's my view: 这是我的看法:

@extends('layouts.app')
<style>

</style>
@section('content')
<h5 align="center">Main Page</h5>
<br>
<div align="center">
<div style="display: inline-block;text-align: left;">

Choose ingredient
<br><br>
<select name="ingredient" id="ingredient" class="form control">
        <option value="0">Choose...</option>
        @foreach ($ingredients as $ingredient)
        <option value="{{ $ingredient->id }}">{{ $ingredient->name  }}</option>
        @endforeach
</select> 
<input type="button" id="button1" value="+ Add ingredient" onclick="addIngredient();"></input>
<br><br>
<div id="Chosen_ingredients"></div> 

   <br>
Choose ingredients, which should not be in the recipe
<br><br>
<select name="ingredient2" id="ingredient2" class="form control">
        <option value="0">Choose...</option>
        @foreach ($ingredients as $ingredient)
        <option value='{{ $ingredient->id }}'>{{ $ingredient->name  }}</option>
        @endforeach
</select> 
<input type="button" id="button2" value="+ Add ingredient" onclick="addUnwantedIngredient();"></input>
<br><br>
<div id="Unwanted_ingredients"></div>

<button class="btn btn-primary" onclick="location.href='{{ url('foundrecipes') }}'">Search</button>


<script>

var x = 1;
var array = Array();
var ing = Array();

function addIngredient()
{
 array[x] = document.getElementById("ingredient").selectedIndex;

 if(array[x] > 0)
{
   ing[x] = $("select[name='ingredient'").find('option:selected').text();

    x++;
    var e = "";   

   for (var y=1; y<array.length; y++)
   {
     e += y + " . " + " " + ing[y] + "<br/>";
   }
   document.getElementById("Chosen_ingredients").innerHTML = e + "<br/>";
   return array;
}
else
{
   alert('Choose ingredient from the list');
}

}

var z = 1;
var array2 = Array();
var ing2 = Array();

function addUnwantedIngredient()
{
 array2[z] = document.getElementById("ingredient2").selectedIndex;

 if(array2[z] > 0)
{
   ing2[z] = $("select[name='ingredient2'").find('option:selected').text();

    z++;
    var e = "";   

   for (var y=1; y<array2.length; y++)
   {
     e += y + " . " + " " + ing2[y] + "<br/>";
   }
   document.getElementById("Unwanted_ingredients").innerHTML = e + "<br/>";
   return array2;
}
else
{
   alert('Choose ingredients from the list');
}


}

</script>

</div>
@endsection

How can I pass those 2 arrays to my controller and make query from it? 如何将这两个数组传递给控制器​​并从中进行查询?

You can use hidden input for each array and update values when you add items to arrays. 您可以为每个数组使用隐藏的输入,并在向数组添加项目时更新值。 and separate each value with a separator. 并使用分隔符分隔每个值。 I mean you can have two text input like this: 我的意思是您可以有两个这样的文本输入:

<input type="hidden" name="array1" id="array1" /> <input type="hidden" name="array2" id="array2" />

and update those values like this: 并像这样更新这些值:

$('#ingredient').on('change',function () {
   array1.push($(this).val())
   $('#array1').val(array1.join('-')); "-" is your seperator
});

and do it for array2 too. 并为array2做。

And in your back-end you can use $array1 = explode('-', $array1); 在后端,您可以使用$array1 = explode('-', $array1); to convert your text data to array. 将文本数据转换为数组。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用axios将数组从JavaScript传递到laravel控制器 - How to pass arrays from javascript to laravel controller using axios 如何在 laravel 更改时使用 javascript 将变量从视图传递到 controller - How to pass a variable from view to controller using javascript on change in laravel 如何:在Laravel 4中将数据从控制器传递到JavaScript? - How to: pass data from controller to JavaScript in Laravel 4? 在 Laravel 中,如何简单地将数据从 js 传递到 controller 返回查看? - In Laravel, how to simply pass data from js to controller back to view? 如何将数组从视图传递给控制器​​? 使用 Laravel - How to pass an array from view to controller? Using Laravel Laravel将按钮值从控制器传递到视图 - Laravel pass button value from controller to view 如何从 ZA5C95B86291EA29027FCBE64458ED17 中的外部 javascript 的视图中调用 controller function? - How to call controller function from view by external javascript in Laravel 7? 将JavaScript数组从视图传递到Laravel控制器 - Passing JavaScript array from view to Laravel controller 使用 Javascript 从 controller 获取数据到视图 Laravel - Getting data from controller to the view Laravel with Javascript 如何在Yii框架的View中将数组和嵌套数组从Controller传递到Javascript - How to pass arrays and nested arrays from Controller to Javascript in View in Yii framework
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM