无法在从ajax发送的laravel控制器中获取数据

我有一条路线,


Route::post('/shop', 'ShopController@index');

Route::resource('/shop', 'ShopController')->parameters(['shop' => 'slug']);

我想通过价格范围过滤产品。


这是我的 :


filter_data();

        var sliderrange = $('#slider-range');

        var amountprice = $('#amount');

        function filter_data() {

            var  min_price = $("#min_price").val();

            var  max_price = $("#max_price").val();

            console.log(min_price);

            $.ajax({ url:"/shop", method:"GET",

                data:{ min_price:min_price, max_price:max_price,},

                success:function (data) { },

            });

        };

这是控制器:


    public function index(Request $request)

{

    $min = $request->input('min_price');

    $max = $request->input('max_price');


    return view('front.pages.shop', ['products' => Product::where('status', 1)->whereBetween('price', ['min', 'max'])->latest()->paginate(15)]);

}


哔哔one
浏览 132回答 2
2回答

jeck猫

显然问题是控制器没有返回正确的数据(据我所知。)调试此类问题的第一步是检查您用于查询的参数是否实际填充。这可以这样做: dd($min, $max)如果 dd 函数的输出显示空值,则问题出在 ajax 请求中。如果它们已设置,您需要执行以下操作:public function index(Request $request){    $min = $request->input('min_price');    $max = $request->input('max_price');    $products = Product::where('status', 1)->whereBetween('price', ['min', 'max'])->latest()->paginate(15);    dd($products);    return view('front.pages.shop', ['products' => $products]);}将您的产品放在一个变量中,然后使用该变量运行 dd() 函数以查看您是否有数据。完成调试后删除 dd() 函数。如果您有数据,问题可能出在其他地方。注意:如果你想获取数据,你实际上应该为路由使用 GET 方法而不是使用 POST 方法。例子:Route::get('/shop', 'ShopController@index');我希望这是朝着正确方向的一点推动,尝试逐步调试以找到可能存在问题的确切点。

HUH函数

您在浏览器中收到的错误消息到底是什么?如果问题与 CORS 相关并且您使用的是 Laravel 7,则您应该更新该config/cors.php文件以使其适用于您的项目。(例如设置'allowed_origins' => ['*'])。
打开App,查看更多内容
随时随地看视频慕课网APP