-1
私のlaravelプロジェクトに依存するドロップダウンが必要なので、私は500という内部サーバエラーを与えて下のコードを試していました。最初の選択ボックスで値がデータベースから表示されますが、1つを選択すると、2番目の選択ボックスに値が表示されません。laravelの依存ドロップダウン
ルートでRoute::get('/', function() {
$categories = Category::all();
return view('welcome')->with('categories', $categories);
});
Route::get('ajax-subcat/{id}', '[email protected]');
私のコントローラで
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesResources;
class Controller extends BaseController
{
//use AuthorizesRequests, AuthorizesResources, DispatchesJobs, ValidatesRequests;
public function ajaxcall($id){
$subcategories = Subcategory::where('category_id', '=', $id)->get();
return Response::json($subcategories);
}
}
モデルカテゴリで
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
protected $fillable = ["name"];
}
モデルのサブカテゴリで
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Subcategory extends Model
{
protected $fillable = ["name", "category_id" ];
}
ビューで
:
<!DOCTYPE html>
<html>
<head>
<title>Laravel</title>
<meta name="csrf-token" content="{{ csrf_token() }}">
<link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css">
<script> src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<!-- <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>-->
</head>
<body>
<div class="container">
{{Form::open(array('url'=>' ', 'files'=>true))}}
<label>Categories</label>
<select class="form-control input-sm" name="category" id="category">
@foreach ($categories as $category)
<option value="{{$category->id}}"> {{$category->name}} </option>
@endforeach
</select>
<div class="form-group">
<label>SubCategories</label>
<select class="form-control input-sm" name="subcategory" id="subcategory">
<option value=" "></option>
</select>
</div>
<script>
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$('#category').on('change', function(e){
console.log(e);
var category_id = e.target.value;
//ajax
$.get('ajax-subcat/' + category_id, function(data){
console.log(data);
$('#subcategory').empty();
$.each(data, function(index, subcatObj){
$('#subcategory').append('<option value ="'+ subcatObj.id +'">'+subcatObj.name+'</option>');
});
});
});
</script>
{{Form::close()}}
</div>
</body>
</html>
であなたの
Subcategory
モデル? – madalinivascu@madalinivascu最初の選択ボックスから1つを選択すると、コンソールに表示されます。エラーGET localhost:8000/ajax-subcat/2 500(内部サーバエラー) – ramtawker
'localhost:8000/ajax-subcat/2'にブラウザで直接アクセスしようとしましたが、動作しない場合はコントローラエラーが発生します – madalinivascu