Я использую laravel 4..2 и имею функцию html onchange, такую как изображение. И показывая мне ошибку как второе изображение.
Этот запрос AJAX не работает на методе создания, но работает над методом индекса контроллера ресурсов laravel.
Это происходит из-за контроллера laravel. Может ли кто-нибудь помочь мне, объяснив это.
// Routes.php Route::resource('index', 'IndexController'); Route::get('ajax-subcat', function(){ $cat_id = Input::get('cat_id'); $subcategories = Subcategory::where('parent_ID', '=', $cat_id)->get(); return Response::json($subcategories); }); // AJAX <script> $('#category').on('change', function(e){ console.log(e); var cat_id = e.target.value; // AJAX $.get('ajax-subcat?cat_id=' + cat_id, function(data){ $('#subcategory').empty(); $.each(data, function(index, subcatObj){ $('#subcategory').append('<option value="'+subcatObj.id+'">'+subcatObj.name+'</option>') }); // console.log(data); }); }); </script>
Поскольку вы используете Laravel, давайте начнем использовать laravel в полной мере:
В Routes.php создайте:
Route::get('ajax-subcat/{id}', 'SOME_CONTROLLER_NAME@SOME_METHOD_NAME');
«{id}» сообщает laravel для хранения сведений о том, что происходит после «/» в переменной, и передать его указанному методу контроллеров. Нет ничего более уродливого, чем наличие ajax-subcat = cars в URL-адресе. Также замените SOME_METHOD_NAME и SOME_CONTROLLER_NAME на правильные имена.
В своем контроллере добавьте:
public function THAT_METHOD_NAME_FROM_THE_ROUTE($id){ $subcategories = Subcategory::where('parent_ID', '=', $id)->get(); return Response::json($subcategories); }
И в вашем сценарии Ajax
<script> $('#category').on('change', function(e){ console.log(e); var cat_id = e.target.value; // AJAX $.get('ajax-subcat/' + cat_id, function(data){ $('#subcategory').empty(); $.each(data, function(index, subcatObj){ $('#subcategory').append('<option value="'+subcatObj.id+'">'+subcatObj.name+'</option>') }); // console.log(data); }); }); </script>