【问题标题】:I want text type to be stored in database instead of the id Ajax Laravel 7我希望将文本类型存储在数据库中,而不是 id Ajax Laravel 7
【发布时间】:2020-11-15 23:55:36
【问题描述】:

我是阿贾克斯的新手。所以,请原谅我缺乏知识。当我通过view 中的data 时,我在我的数据库中得到IDs。即使我从下拉依赖菜单中传递了text,也可以解释一下!

请查看这 2 个表格类别

和产品

我想在我的视图中从类别('Désignation' => first table)中获取名称 - 但我得到了 ID。请帮忙。

控制器

public function create() {
  $prod=ProductCat::all();
  return view('Achats.create',compact('prod'));
}

public function findProductName(Request $request) {
   $data = Product::select('Désignation','id') -> where('catégorie', $request->id) -> take(100) -> get();
   return response()->json($data);
}

public function findRef(Request $request) {
  $p = Product::select('Référence')->where('id',$request->id)->first();
  
  return response()->json($p);
}

路线

Route::get('create','AchatController@create')->name('create.Achat');
Route::get('/findProductName','AchatController@findProductName');
Route::get('/findRef','AchatController@findRef');

查看

<form action="{{ route('Achat.store')}}" method="POST" enctype="multipart/form-data">
<span>Product Category: </span>
<select style="width: 200px"class="form-control catégorie" name="catégorie" id="catégorie" >
    <option value=" " disabled="true" selected="true">-Select-</option>
    @foreach($prod as $cat)
      <option value="{{$cat->id}}">{{$cat->Désignation}}</option>
   @endforeach
  </select>
  <span>Product Name: </span>
<select name ="Désignation" class="form-control Désignation" id="Désignation" style="width: 200px" >

  <option value="" disabled="true" selected="true">Product Name</option>
 </select>

 <span>Product ref: </span>
 <input name="Référence" id="Référence" class="form-control Référence" type="text" >

  <br>

ajax

      <script type="text/javascript">
$(document).ready(function(){

    $(document).on('change','.catégorie',function(){
        // console.log("hmm its change");

        var cat_id=$(this).val();
        // console.log(cat_id);
        var div=$(this).parent();

        var op=" ";

        $.ajax({
            type:'get',
            url:'{!!URL::to('findProductName')!!}',
            data:{'id':cat_id},
            success:function(data){
                //console.log('success');

                //console.log(data);

                //console.log(data.length);
                op+='<option value="0" selected disabled>chose product</option>';
                for(var i=0;i<data.length;i++){
                op+='<option value="'+data[i].id+'">'+data[i].Désignation+'</option>';
               }

               div.find('.Désignation').html(" ");
               div.find('.Désignation').append(op);
            },
            error:function(){

            }
        });
    });

    $(document).on('change','.Désignation',function () {
        var prod_id=$(this).val();

        var a=$(this).parent();
        console.log(prod_id);
        var op="";
        $.ajax({
            type:'get',
            url:'{!!URL::to('findRef')!!}',
            data:{'id':prod_id},
            dataType:'json',//return data will be json
            success:function(data){
                console.log("Référence");
                console.log(data.Référence);

                // here price is column name in products table data.coln name
                a.find('.Référence').val(data.Référence);

            },
            error:function(){

            }
        });


    });

});

【问题讨论】:

    标签: php jquery mysql ajax laravel


    【解决方案1】:

    看起来您将 Id 作为值传递,因此在您的数据库表中获取 Id 的原因。

    改变

    @foreach($prod as $cat)
      <option value="{{$cat->id}}">{{$cat->Désignation}}</option>
    @endforeach
    

    @foreach($prod as $cat)
          <option value="{{$cat->Désignation}}">{{$cat->Désignation}}</option>
    @endforeach
    

    这应该会有所帮助。

    【讨论】:

    • 感谢您的回复,但问题是当我尝试这样做时,当我选择类别时下拉菜单没有显示其他产品
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    相关资源
    最近更新 更多