简体   繁体   English

Laravel JSON返回404

[英]Laravel json return 404

I try to get list of users addresses on dropdown but i get 404 error on network also when i test it by url it returns 404 Page Not Found 我尝试在下拉列表中获取用户地址列表,但是当我通过url测试它时,我也在网络上收到404错误,它返回404 Page Not Found

Logic 逻辑

  1. User can have many address 用户可以有多个地址
  2. Each address has user_id column in addresses table (I can get them from address table by their user_id) 每个地址在addresses表中都有user_id列(我可以通过其user_id从地址表中获取它们)

What I need? 我需要的?

1- Select user in dropdown 1-在下拉菜单中选择用户

2- Show his/her addresses in other dropdown 2-在其他下拉菜单中显示他/她的地址

My controller: 我的控制器:

public function getAddressList($user_id)
{
  $address = Address::where('user_id',$user_id)->get();
  return response()->json($address);
}

Route: 路线:

Route::get('/getAddressList/{user_id}','OrderController@getAddressList');

Blade: 刀:

// Select boxes
<div class="row bg-danger mb-20" style="padding: 7px;">
                      <div class="col-md-6">
                        {{ Form::label('user_id', 'Buyer') }}
                        <select name="user_id" class="form-control">
                            <option class="form-control" value="">Select user</option>
                             @foreach($users as $user)
                              <option value="{{ $user->id }}">{{ $user->name }}</option>
                            @endforeach
                        </select>
                      </div>

                      <div class="col-md-6">
                        {{ Form::label('address_id', 'Buyer Address') }}
                        <select name="address_id" class="form-control">
                            <option class="form-control" value="">Select Address</option>
                        </select>
                      </div>
                  </div>


//Javascript codes
<script type="text/javascript">
$(document).ready(function() {
  $('select[name="user_id"]').on('change', function() {
    var userID = $(this).val();
    if(userID) {
      $.ajax({
          url: '{{ url('getAddressList') }}/'+encodeURI(userID),
          type: "GET",
          dataType: "json",
          success:function(data) {
          $('select[name="address_id"]').empty();
          $.each(data, function(key, value) {
              $('select[name="address_id"]').append('<option class="form-control" value="'+ value['id'] +'">'+ value['address'] +'</option>');
              });
          },
      });
    }else{
      $('select[name="address_id"]').empty();
    }
  });
});
</script>


PS: if i visit: `http://domain.dev/getAddressList/1` i get 404 Page not fount as well as inspect network tab

Your route definition 您的路线定义

Route::get('/getAddressList/{user_id}','OrderController@getAddressList');

must have been placed under group definition with some prefix . 必须已放在带有一些prefix组定义下。

Rectifying the route definition placement would resolve your issue. 纠正路线定义的位置可以解决您的问题。

With respect to the comments, you could revert back your controller method signature to 关于注释,您可以将控制器方法签名还原为

public function getAddressList($user_id) {}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM