Ошибка Ajax и Laravel 500 (Внутренняя ошибка разъединения)

#javascript #php #ajax #laravel

Вопрос:

Я пытаюсь использовать AJAX в Chrome, но это не работает. Это мой код, который вы можете увидеть ниже. Это копия моего web.php файл.

 Route::view('menu','home.menu',['categories'=> AppCategories::orderBy('name')->get()->take(11),'active' => 'menu'])->name('menu');
Route::get('/products','MenuController@getproducts');
 

Это мой аякс

 $.ajax({
      type: "GET",
      dataType:'html',
      url: "{{url('/products')}}",
      data: "cat_id="  id,
      success: function(response){
        console.log(response)
        $("#productData").html(response)
      },
      error: function(data) {
        console.log('Error:', data);
      },
    });
 

Это код для моего метода контроллера.

     public static function getproducts(Request $request)
    {
        get productsd = $request->cat_id;
        $categories = Categories::orderBy('name')->get()->take(11);
        $collection = DB::table('products')
                      ->join('product_category', 'products.id','=', 'product_category.product_id')
                      ->where('product_category.category_id', '=', $category_id)
                      ->get();
        return view('home.menu',[
            'data' => $collection,
        ]);
    }
 
 FacadeIgnitionExceptionsViewException: Undefined variable: categories (View: /Applications/XAMPP/xamppfiles/htdocs/shop/resources/views/home/menu.blade.php) in file /Applications/XAMPP/xamppfiles/htdocs/shop/resources/views/home/menu.blade.php on line 28
 

Комментарии:

1. вид возврата(‘home.menu’,[ ‘данные’ => $коллекция, ‘категории’ =>> $категории, ]); }

Ответ №1:

Одно изменение, которое вы можете сделать, — это в Ajax для строки ниже.

 data: "cat_id="  id,
 

Так что лучше сдать

 data: {cat_id:id}
 

вы не используете полученное category id от request в своем запросе при возврате представления ,вы не передаете категории

 return view('home.menu',[
            'data' => $collection,
            'categories'=>$categories
        ]);