【问题标题】:Dropdown results based on selection from previous dropdown基于从先前下拉列表中选择的下拉结果
【发布时间】:2019-10-27 02:28:37
【问题描述】:

我需要一些帮助来获取此下拉过滤器的更多值。 我有 3 个下拉菜单,第一个给我所有“公司”,第二个将显示该公司的所有“区块”,最后一个将给我该区块的所有房间。

所以,我需要在最后一个下拉列表中显示 3 个值('id'、'sala'、'name')。我该怎么做?

我如何获取填充最后一个下拉列表的值:

public function getAmbienteRev(Request $request)
{
        $ambientes = DB::table("ambientes")
            ->where("bloco_id",$request->bloco_id)
            ->orderByRaw("sala", "asc")
            ->pluck('sala', 'id');
        return response()->json($ambientes);
}

这里是过滤值的代码:

$('#unidade').change(function() {
   var unidadeID = $(this).val();
   if (unidadeID) {
       $.ajax({
           type: "GET",
           url: "{{url('get-bloco-rev')}}?unidade_id=" + unidadeID,
           success: function(res) {
               if (res) {
                   $("#bloco").empty();
                   $("#bloco").append('<option>Selecione o Bloco</option>');
                   $.each(res, function(key, value) {
                       $("#bloco").append('<option value="' + key + '">' + value + '</option>');
                   });

               } else {
                   $("#bloco").empty();
               }
           }
       });
   } else {
       $("#bloco").empty();
       $("#ambiente").empty();
   }
});
$('#bloco').on('change', function() {
   var blocoID = $(this).val();
   if (blocoID) {
       $.ajax({
           type: "GET",
           url: "{{url('get-ambiente-rev')}}?bloco_id=" + blocoID,
           success: function(res) {
               if (res) {
                   $("#ambiente").empty();
                   $("#ambiente").append('<option>Selecione a Sala</option>');
                   $.each(res, function(key, value) {
                       $("#ambiente").append('<option value="' + key + '">' + value + '</option>');
                   });

               } else {
                   $("#ambiente").empty();
               }
           }
       });
   } else {
       $("#ambiente").empty();
   }

 });

我需要这样的东西:

    $.each(res, function(key, value, name) {
                   $("#ambiente").append('<option value="' + key + '">' + value + ' - ' + name +'</option>');
               });

我做了这些改变:

 ->pluck('name','sala', 'id')

和脚本

$.each(res, function(key, value1, value2) {
                    console.log(res);
                       $("#ambiente").append('<option value="' + key + '">' + value1 + ' - ' + value2 + '</option>');
                   });

console.log(res)

 {101: "Sala de Aula", 102: "Sala de Aula", 103: "Lab de Criatividade e Inovaçăo", 105: "Atelier de Moda 2", 106: "Sala de Desenho 1", 107: "Sala de Aula", 109: "Sala de Aula", 110: "Sala de Aula", 113: "Sala de Aula", 114: "Atelier de Projeto 2 Design", 115: "Atelier de Projeto 3 Design", 116: "Atelier de Projeto 4 Design", 117: "Atelier de Projeto 5 Design", 118: "Atelier de Projeto 6 Design", 201: "Laboratorio de Simulaçăo e Projetos 1", 202: "Laboratório de Simulaçăo e Projetos 2", 203: "Laboratorio de Telecomunicaçőes", 204: "Laboratorio de Eletronica de Potencia", 206: "Sala de Aula", 207: "Laboratório de Eletrônica", 209: "Laboratório de Eletrônica", 210: "Sala de Aula", 213: "Espaço Fotográfico lab.fotogafico", 214: "Sala de Aula", 215: "Sala de Aula", 216: "Sala de Aula", 218: "Sala de Aula", 219: "Sala de Aula", 220: "Sala de Aula", 221: "Sala de Aula", 001: "Laboratório de Computaçăo 01", 002: "Laboratorio de Computaçăo 02", 002A: "Lab. de Informática 7", 002B: "Lab. de Informática 8", 002C: "Lab. de  Informatica 9", …}

但在下拉菜单中显示

<option value="101">Sala de Aula - undefined</option>

【问题讨论】:

  • keyvalue上做一个console.log();看看它们包含什么。您可能需要使用对象表示法,例如 value.salavalue.id,如果这是您从 AJAX 调用返回的内容。
  • @TimLewis,他们返回 id 和房间号,但我还需要显示房间的名称。例如:...value="1">001 - 会议室红色
  • 请将console.log(res)的内容添加到您的问题中。它应该是一个 JS 对象数组,并且每个对象都应该有属性 salaid (这就是你要采摘的:-&gt;pluck('sala', 'id');
  • 这是你要求的吗?
  • 是的,但我不确定为什么会这样。也许不使用-&gt;pluck()?替换为-&gt;get(),然后在你的函数中,你应该有function(index, ambient),并且每个ambient应该是一个有salaidname可用的对象,比如ambient.sala等。跨度>

标签: javascript ajax laravel-5.8


【解决方案1】:

我在控制器上使用 concat 解决了这个问题。

        $ambientes = DB::table("ambientes")
            ->where("bloco_id",$request->bloco_id)
            ->orderByRaw("sala", "asc")
            ->pluck(DB::raw('CONCAT(sala," - ",name) AS name'),'id');
        return response()->json($ambientes);

tks

【讨论】:

    猜你喜欢
    • 2012-06-11
    • 1970-01-01
    • 2016-02-13
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    相关资源
    最近更新 更多