Ajax & Laravel - не может заполнить базу текстового поля при динамическом выпадающем списке - PullRequest
0 голосов
/ 30 декабря 2018

У меня проблема с отображением данных 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>

На моей консоли есть предупреждение.

Вот предупреждение

[Нарушение] Добавлен непассивный слушатель события в блокирующее прокрутку событие mousewheel.Пометьте обработчик событий как пассивный, чтобы сделать страницу более отзывчивой.См. https://www.chromestatus.com/feature/5745543795965952 создать: 342

Здесь вывод, но ничего не отображается

enter image description here

Ответы [ 5 ]

0 голосов
/ 30 декабря 2018

// убедитесь, что это есть в вашем html заголовочном файле

// Также убедитесь, что этот скрипт есть в вашем скрипте jquery перед вашим кодом ajax

$.ajaxSetup({
    headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
});
0 голосов
/ 30 декабря 2018

Пожалуйста, следуйте этой структуре кода $ (документ) .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");
}
});


});

});

0 голосов
/ 30 декабря 2018

Пожалуйста, попробуйте изменить этот $ (документ) .on ('change', '. Productname', function () {

By this

$ ('. Productname'). On('change', function (e) {

И используйте вместо этого e

Пожалуйста, попробуйте это и дайте мне знать, как проводить семинар:)

0 голосов
/ 30 декабря 2018

В jquery внесите эти изменения.

remove var a = $ (this) .parent ();Изменить данные: {'id': prod_id}, на данные: {id: prod_id}, Изменить a.find ('. Prod_price'). Val (data.aircraft_id);до $ ('. prod_price'). val (data.aircraft_id);

0 голосов
/ 30 декабря 2018

Ваш Laravel json должен иметь ассоциативный массив.Примерно так: return json_encode (array ("aircraft_id" => $ p));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...