【问题标题】:Populate multiple select box with jquery and laravel使用 jquery 和 laravel 填充多个选择框
【发布时间】:2014-05-24 00:31:33
【问题描述】:

我正在使用 laravel,我需要根据用户从数据库中选择的内容填充多项选择。 我有 2 个选择框,一个选择类别,然后一旦我选择了类别,第二个选择框就会填充产品。 一旦第二个选择填充了产品,我需要从数据库中获取该产品的所有描述并以表格形式显示,以便对其进行修改。

我做了一个路线:

 Route::get('api/dropdown', function(){
            $input =Input::get('option');

                $prodotti= DB::table('prod')                
                    ->join('cat','cat.id_prod','=','prod.id')
                    ->where('cat.id','=',$input)
                    ->select('prod.id as idprod','prod.nome as nomeprod')
                    ->lists('nomeprod','idprod');


            return Response::json($prodotti);
            });

这应该会发送响应

{{ Form::open(array('url' => 'admin/create/mod', 'files'=> true)) }}
        <span>
        {{ Form::select('categorie',  $categorie,'default', array('id'=> 'a')) }}
            <br/>

        {{ Form::select('a',array('a'=> 'scegli'),'default', array('id'=> 'b')) }}

        Scegli il nome del prodotto

        {{Form::text('nome')}}
        <br/>
        {{Form::label('*Descrizione in Italiano')}}
        <br/>
        {{Form::textarea('descrizioneit','',array('id'=>'descrizioneit'))}}
        {{Form::textarea('descrizioneit','',array('id'=>'previewit', 'readonly'=>'readonly', 'onfocus'=>'this.blur();'))}}
        <br/>
        {{Form::label('*Descrizione in Inglese')}}
        <br/>
        {{Form::textarea('descrizioneen','',array('id'=>'descrizioneen'))}}
        {{Form::textarea('descrizioneen','',array('id'=>'previewen', 'readonly'=>'readonly', 'onfocus'=>'this.blur();'))}}
        <br/>

{{Form::close()}}

这是我的 JavaScript

jQuery(document).ready(function($){
    $('#a').change(function(){
            $.get("{{ URL::to('api/dropdown')}}", 
                { option: $(this).val() }, 
                function(data) {
                    var model = $('#b');
                    model.empty();

                    $.each(data, function(element) {
                        model.html(element);
                    });
                });
        });
    });

那我应该做另一个 api 来用我选择的产品描述填充文本框吗?

我会遵循这个想法,但即使是第一部分也行不通。 看来我的javascript代码被忽略了。

【问题讨论】:

  • 第一部分是指路线吗?我相信您应该返回 json,因此请尝试 return Response::json($prodotti); 并在浏览器中转到该路线。您应该会在屏幕上看到一些文字。
  • 是的,我看到了,可能错误在 javascript 中,我不能很好地使用 jquery。我已经添加了 Json 并且我查询 api/dropdown?option=1 并且我从数据库中得到了正确的响应
  • 好的,所以我要做的是确保您的事件处理程序正常工作。尝试在$('#a').change(function(){ 之后添加alert('working');,它应该在每次更改时发出警报,以确保它正常工作。
  • 是的,是的,我已经这样做了,我得到了正确的警报,其中选项的值被选择了
  • 可能我以错误的方式访问 jquery 中的数据

标签: javascript php jquery mysql laravel


【解决方案1】:

好的,试着阅读和分析这篇文章,它更像你要找的东西

<?php
   require_once('func.inc.php'); //Connection script remember
   connect();
    ?>
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>testDroplistdown</title>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  </head>

  <body>
  <p align="center">
  <div id="dropdown1div"><select id="dropdown1" name="dropdown">
  <?php countryQuery(); ?>
  </select></div>
  </p>
  <br />
  <br />

  <p align="center">
  <div id="dropdown2div"></div>
  </p>

  <p align="left">
  <div id="dropdown3div"></div>

    <script type="text/javascript">
    $("#dropdown").change(function() {
    val = $(this).val();
    var html = $.ajax({
    url: "dropdown_select.php?dropdown=2&val="+val+"",
    async: true,
    success: function(data) {
    $('#dropdown2div').html(data);
    }////////////function html////////
    })/////////function ajax//////////
     });
    </script>

   <?php close(); ?>
   </p>


   </body>
   </html>

dropdown_select.php

 <?php
   require_once('func.inc.php');
   connect();
    if(isset($_GET['val'])){   
    $val = $_GET['val'];
    $dropdown = $_GET['dropdown'];
    }


    if($dropdown == '2'){
    echo '<select id="dropdown2" name="dropdown2">';
    governorateQuery();
    echo '</select>';
    ?>
     <script type="text/javascript">
     $("#dropdown2").change(function() {
     val = $(this).val();
     var html = $.ajax({
     url: "dropdown_select.php?dropdown=3&val="+val+"",
     async: true,
     success: function(data) {
     $('#dropdown3div').html(data);
     }////////////function html////////
     })/////////function ajax//////////
     });
    </script>

      } // end if statement



    if($dropdown == '3'){
     echo '<select id="dropdown3" name="dropdown3">';
     specializationQuery();       
     echo '</select>';
       } // end if statement
  close();
  ?>

【讨论】:

    【解决方案2】:

    问题在于您如何填写您的选择。

    jQuery(document).ready(function($){
        $('#a').change(function(){
            $.get("{{ URL::to('api/dropdown')}}", 
                { option: $(this).val() }, 
                function(data) {
                    var model = $('#b');
                    model.empty();
    
                    $.each(data, function(index, value) {     
                         model.append($("<option />").val(index).text(value)); });
                    });
              });
        });
    });
    

    【讨论】:

    • 实际上我用 $.each(data, function(index, value) { model.append($("").val(index).text(value)); });因为我是从一个列表中填充的,但是你的回答让我走上了正确的道路
    猜你喜欢
    • 1970-01-01
    • 2014-05-24
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 2013-04-10
    • 1970-01-01
    • 2016-02-15
    相关资源
    最近更新 更多