Laravel 5.3 API не получает данные при использовании JavaScript на сервере - PullRequest
0 голосов
/ 07 мая 2018

Маршруты: \ route \ web.php

Route::get('api/get-market-list','MemberTradesController@getMarketList');

Route::get('api/get-market-list1','MemberTradesController@getMarketListtest');

Контроллер MemberTradesController

Есть две функции: getMarketListtest (только для тестирования на сервере) и getMarketList (это для запроса $ Request, потому что я использовал его в зависимом поле выбора)

    public function getMarketListtest(){
        $markets = DB::table("markets")
            ->pluck("market","id");
        return response() -> json($markets);
    }

    public function getMarketList(Request $request){
        $markets = DB::table("markets")
            ->where("exchange_id", $request->exchange_id)
            ->pluck("market","id");
        return response() -> json($markets);
    }

Java-скрипты:

<script type="text/javascript">
    $('#exchange').change(function(){
        var exchangeID = $(this).val();
        if(exchangeID){
            $.ajax({
                type:"GET",
                url:"{{url('api/get-market-list')}}?exchange_id="+exchangeID,
                success:function(res){
                    if(res){
                        $("#market").empty();
                        $("#market").append('<option>Select</option>');
                        $.each(res,function(key,value){
                            $("#market").append('<option value="'+key+'">'+value+'</option>');
                        });

                    }else{
                        $("#market").empty();
                    }
                }
            });
        }else{
            $("#market").empty();
            $("#symbol").empty();
        }
    });

</script>

Вид:

    <title>Laravel 5 - Dynamic autocomplete search using select2 JS Ajax</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>

    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
{!! Form::open(['method'=>'POST', 'action'=> 'MemberTradesController@store']) !!}


  <div class="form-group col-sm-5">
            {!! Form::label('exchange_id', 'Exchanges:') !!}
            {!! Form::select('exchange_id', [''=>'Choose Options'] + $exchanges , null, ['class'=>'form-control', 'id'=>'exchange'])!!}
        </div>

 <div class="form-group col-sm-5">
                {!! Form::label('market_id', 'Markets:') !!}
                {!! Form::select('market_id', [''=>'Choose Options'] , null, ['class'=>'form-control', 'id'=>'market'])!!}
            </div>
            
 {!! Form::close() !!}

Снимок экрана TABLE:

Снимок экрана TABLE:

Для функции два Ссылка для результата API: api / get-market-list

Важная информация:

  • когда я использую это в моем локальном хосте, это даст мне результат.
  • first api getMarketListtest () работает, потому что нет: (Request $ request)

Журнал ошибок laravel

[Изменен код согласно вашей функции] 4

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете использовать $request->input('exchange_id'); вместо $request->exchange_id

Просто попробуйте заменить эту функцию.

public function getMarketList(\Illuminate\Http\Request $request){
    $exchange_id = $request->input('exchange_id');
    if(!empty($exchange_id)){
    \Log::info('This is working.');
    }
    $markets = DB::table("markets")
        ->where('exchange_id', $exchange_id)
        ->pluck("market","id");
    return response()->json($markets);
}

Прокомментируйте, если есть какие-либо ошибки.

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