在 laravel 中使用 ajax 用数据库填充下拉列表

Posted

技术标签:

【中文标题】在 laravel 中使用 ajax 用数据库填充下拉列表【英文标题】:populate drop-down list with database using ajax in laravel 【发布时间】:2019-04-04 05:53:09 【问题描述】:

我正在尝试从下拉列表中的数据库中获取数据但它没有显示,我也观看了几个教程但事情没有按预期工作

控制器:

 public function cost(Request $request)
            $lab_data = \DB::table('lab_category')->select('category_name')->get();
              //return $lab_data;
        return view('medicinecost')->with('lab_category',$lab_data);
          

路线:

Route::get('labdetails','Test@cost');
Route::get('labprice',function ()
    return view('pages/medicinecost');
);

medicinecost.blade.php

<div class="form-group">
    <select name="labCat" id="lab" class="form-control input-lg dynamic" data-dependent="labSubCat">
    <option value="$lab_data">Select Lab Category</option>
        @foreach($lab_data as $lb)
            <option value="$lb->lab_category_id">$lb->category_name</option>
        @endforeach
    </select>
</div>

我收到了这个错误

ErrorException in 1180188cd7aaaebdb54a13bbf08bc2d80ab30f15.php line 15:
Undefined variable: lab_data (View: C:\xampp72\htdocs\hospital\resources\views\pages\medicinecost.blade.php)

【问题讨论】:

显示你的medicinecost文件 您能否提供您尝试填充下拉列表的视图代码 foreach loop中使用lab_category而不是lab_data 我已经尝试过@BhargavChudasama 但给了我同样的错误。 如果问题(此处)得到解决,您肯定会收到错误/错误,因为您只选择了category_name,并且您也尝试使用lab_category_id。更改您的选择条件 【参考方案1】:

使用这个

<div class="form-group">
    <select name="labCat" id="lab" class="form-control input-lg dynamic" data-dependent="labSubCat">
    <option value="">Select Lab Category</option>
        @if(isset($lab_category))
        @foreach($lab_category as $lb)
            <option value="$lb->lab_category_id">$lb->category_name</option>
        @endforeach
        @endif
    </select>
</div>


Route::get('labprice',function ()
    $lab_data = \DB::table('lab_category')->select('category_name')->get();
          //return $lab_data;
    return view('pages/medicinecost')->with('lab_category',$lab_data);
);

【讨论】:

我已经使用了你的代码@Shaielndra Gupta,未定义的变量已解决,但列表没有出现 @Prathamesh 正如我之前所说,您必须澄清您在哪条路线上遇到错误 在 Route labprice 我收到一个错误,你的代码解决了 80% 的问题,我快到了 在那条路线上,您直接返回视图,以便如何访问该变量 我使用了这条路线,但它给出了一个错误 View [medicinecost] not found.【参考方案2】:

在 Controller 中,您还需要选择 lab_category_id :

$lab_data = \DB::table('lab_category')->select('lab_category_id','category_name')->get();

还修正了你传递参数的方式,并且不需要传递 lab_category :

return view('medicinecost')->with('lab_data');

在视图中将其默认值设为 0 或空:

<option value="0">Select Lab Category</option>

【讨论】:

【参考方案3】:

试试这个代码

控制器

 return view('medicinecost',['lab_category'=>$lab_data]);

medicinecost.blade.php

<div class="form-group">
    <select name="labCat" id="lab" class="form-control input-lg dynamic" data-dependent="labSubCat">
    <option value="">Select Lab Category</option>
        @foreach($lab_category as $lb)
            <option value="$lb->lab_category_id">$lb->category_name</option>
        @endforeach
    </select>
</div>

【讨论】:

【参考方案4】:

错误在这里

<option value="$lab_data">Select Lab Category</option>

还有这里

@foreach($lab_data as $lb)

您在控制器中定义了$lab_data,但在视图中传递了lab_category 的变量

因此,正如他们之前在答案中提到的那样使用@foreach($lab_category as $lb),并在option-value 中删除 $lab_data

【讨论】:

是的,尝试了同样的方法,但下拉列表中仍然没有填充数据 是的,我用过 dd();对于该变量,它采用 JSON 格式 json 格式?你能快速改变你的return view 像这样return::view('medicinecost', ['lab_category' =&gt; $lab_data ]); 但不确定它是否能解决你的问题【参考方案5】:

你可以试试这个。

你的控制者

public function cost(Request $request)
            $lab_category = \DB::table('lab_category')->select('category_name','lab_category_id')->get();
        return view('medicinecost', compact('lab_category'));
          

您的观点

<div class="form-group">
    <select name="labCat" id="lab" class="form-control input-lg dynamic" data-dependent="labSubCat">
    <option value="">Select Lab Category</option>
        @foreach($lab_category as $lb)
            <option value="$lb->lab_category_id">$lb->category_name</option>
        @endforeach
    </select>
</div>

【讨论】:

以上是关于在 laravel 中使用 ajax 用数据库填充下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4:Input::all() 使用 $.ajax POST 不返回任何数据

不允许 Laravel 和 Ajax 更新

ajax成功后用数据调用另一个控制器后的Laravel

ajax 请求控制器更新 laravel 中的视图

如何将数据库中的值显示到 Laravel 和 Ajax 中的选项值

使用 laravel 进行 ajax 验证后的新用户