2016-06-13 5 views
-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> 
+0

であなたのSubcategoryモデル? – madalinivascu

+0

@madalinivascu最初の選択ボックスから1つを選択すると、コンソールに表示されます。エラーGET localhost:8000/ajax-subcat/2 500(内部サーバエラー) – ramtawker

+0

'localhost:8000/ajax-subcat/2'にブラウザで直接アクセスしようとしましたが、動作しない場合はコントローラエラーが発生します – madalinivascu

答えて

1

参照ページやXHRリクエストで500 ERORを受けないコントローラ

use App\Http\Controllers\Subcategory 
+1

ええ、もう一度ありがとうございました。 – ramtawker

関連する問題