PHP获取选择表单的选定值

我正在使用Laravel并且当前正在创建一个表单,用户可以先选择一个类别,然后选择一个相关的子类别。

类别具有id和名称,子类别具有id和名称,以及parent_id(因此它是父类别的id)。

现在我尝试以下操作:用户可以选择一个类别,在他这样做之后,出现第二个select ,用户可以从属于父类别的子类别中选择子类别(并且只选择那些!)。

因此,视图从控制器获取所有类别和所有子类别。

然后,对于类别我做了这个:

 
has('category') ? ' has-error' : '' }}">
@foreach($categories as $category) <option value="">{{$category->name}} @endforeach

对于子类别,我有相同的,只有子类别:

 
has('subCategory') ? ' has-error' : '' }}">
@foreach($subCategories as $subCategory) <option value="">{{$subCategory->name}} @endforeach

现在的问题是:我需要做的是(在@if foreach中) @if并检查所选category select option的值,然后检查if($subcategory->parent_id == $chosenOptionID) ,用伪代码说出来。 我怎样才能做到这一点? 在有人没有选择子类别之前,我不想发送表单或其他东西……当然,我可能会在选择类别时向控制器发送ajax请求,然后检查值控制器中的选项并发回id。 但这会导致非常多的流量,并且可能不是最好的解决方案,所以我只想这样做,如果我没有更好的方法做….

PS:问题不在于没有选择类别时隐藏子类别,那就是基本的js,我知道如何做到这一点。 我只想知道,如果可以在尚未发送表单的情况下读取category select的值。

编辑 :我现在尝试了AJAX的事情,但似乎有一点错误…我改变了什么:

 
has('subCategory') ? ' has-error' : '' }}">

select现在为空并且有一个ID。 然后在同一个文件中我有以下JS:

  $().ready(function(){ $('#categorySelect').change(function(){ var selectedOption = $('#categorySelect').find(":selected").val(); $.ajax({ url: '/getSubCategories', data: {'id': selectedOption}, type: 'GET', success: function (data) { $('#subCategorySelect').html(data); } }); }); });  

/getSubcategories路由指向我的控制器中的以下函数:

 public function returnSubCategories(Request $request){ $subCategories = Subcategory::where('parent_id', '=', $request->id); foreach($subCategories as $subCategory){ echo "id'>$subCategory->name"; } } 

但是它不起作用。在选择一个选项时,会默认发送ajax请求,同时发送正确的id。 但不知何故没有输出……任何想法为什么?

我终于使用了AJAX。 这是我最初的subCategorySelect

 

select现在为空并且有一个ID。 然后在同一个文件中我有以下JS:

  

/getSubcategories路由指向我的控制器中的以下函数:

 public function returnSubCategories(Request $request){ $subCategories = Subcategory::where('parent_id', '=', $request->id)->get(); foreach($subCategories as $subCategory){ echo ""; } } 

而且效果很好。

希望这可以帮助您了解它如何与PHP一起使用一个选定的选项: