Laravel Ajax请求不使用控制器

时间:2015-01-06 19:00:37

标签: php ajax select laravel onchange

enter image description here

enter image description here

我正在使用laravel 4..2并拥有像图像一样的html onchange功能。并将错误显示为第二张图片。

此AJAX请求不适用于create方法,但它适用于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>

1 个答案:

答案 0 :(得分:2)

自从你使用Laravel后,让我们开始充分利用laravel:

在Routes.php中,请创建:

 Route::get('ajax-subcat/{id}', 'SOME_CONTROLLER_NAME@SOME_METHOD_NAME');

“{id}”告诉laravel存储变量中“/”之后的内容的详细信息,并将其传递给指定的控制器方法。没有什么比在URL中拥有ajax-subcat = cars更难看了。另外,请使用正确的名称替换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>