Ajax和Laravel-无法基于动态下拉列表选择填充文本框

时间:2018-12-30 11:41:32

标签: php jquery mysql ajax laravel

我在文本框中显示ajax数据时遇到问题,这是我唯一的问题,我无法在文本框中显示数据,请参阅

控制器中的代码

public function create()
{
    $aircraft = Aircraft::all();
    $aircraft_reg = Aircraft::pluck('aircraft_registration_number', 'id')->toArray();
    return view('admin.aircrafts.create',compact('aircraft_reg','aircraft'));
}

public function findPrice(Request $request) {
    $p = Aircraft::select('aircraft_id')->where('id',$request->id)->first();
    return response()->json($p);
}

路线代码

Route::get('/admin/aircrafts/findPrice', 'Admin\AircraftsController@findPrice');

视图中的代码

 {{Form::select('productname', $aircraft_reg,null,['class' => 'form-control productname', 'placeholder' => 'Select RPC No.'])}}<br>
    <br>
    {{Form::text('prod_price', '', ['class' => 'form-control prod_price'])}}

AJAX中的代码

 <script type="text/javascript">

  $(document).ready(function(){
        $(document).on('change','.productname',function(){
            var prod_id=$(this).val();

            var a=$(this).parent();
            console.log(prod_id);
            var op="";

            $.ajax({
            type:'get',
            url:'{!! URL::to('admin/aircrafts/findPrice') !!}',
            data:{'id':prod_id},
            dataType:'json',//return data will be json
            success:function(data){
                console.log("aircraft_id");
                console.log(data.aircraft_id);

                // here price is column name in products table data.coln name

                a.find('.prod_price').val(data.aircraft_id);
            },
            error:function() {
            }
        });
     });
  });
  </script>

控制台上有一个警告。

这是警告

  

[Violation]在滚动阻止中添加了非被动事件侦听器   “鼠标滚轮”事件。考虑将事件处理程序标记为“被动”   使页面更具响应性。看到   https://www.chromestatus.com/feature/5745543795965952创建:342

以下是输出,但未显示任何内容

enter image description here

5 个答案:

答案 0 :(得分:0)

您的Laravel json应该具有关联数组。像这样: 返回json_encode(array(“ aircraft_id” => $ p));

答案 1 :(得分:0)

请尝试更改此 $(document).on('change','。productname',function(){

以此

$('。productname')。on('change',function(e){

并使用e代替

请尝试一下,让我看看我的工作坊:)

答案 2 :(得分:0)

在jquery中进行此更改。

删除var a = $(this).parent(); 将数据:{'id':prod_id}更改为数据:{id:prod_id}, 更改a.find('。prod_price')。val(data.aircraft_id);到$('。prod_price')。val(data.aircraft_id);

答案 3 :(得分:0)

请遵循以下代码结构 $(document).ready(function(){

$('.productname').on('change',function(e){
e.preventDefault();
var prod_id=$(this).val();
$.ajax({
type:'get',
url:'{!! URL::to('admin/aircrafts/findPrice') !!}',
data:{id:prod_id},
dataType:'json',//return data will be json
success:function(data){
console.log(data.aircraft_id);
$('.prod_price').val(data.aircraft_id);

},
error:function(){
alert("Error Occurred");
}
});


});

});

答案 4 :(得分:0)

//确保您的html头文件中有此文件

//还请确保在ajax代码之前,在jquery脚本中包含此脚本

$.ajaxSetup({
    headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
});