开发者问题收集

在 laravel 5.7 和 vue.js 中,搜索功能在我的主机中不起作用

2019-11-04
176

我有一个使用 laravel 5.7 和 vue.js 的多供应商网站项目。我使用以下代码实现搜索功能。

我的 Web.php

Route::post('product/search','Api\productController@search');

我的 Controller

public function search(Request $request)
   {
            $searchTitle = $request->title;
            $searchCategory = $request->category;
            $searchUni = $request->uni;
            $searchCity = $request->city;
            if ($searchTitle || $searchCategory || $searchUni || $searchCity) {
                $ads = advertise::when($searchCategory, function ($query) use ($searchCategory) {
                    return $query->where('category_id', 'like', "%{$searchCategory}%");
                })
                    ->when($searchUni, function ($query) use ($searchUni) {
                        return $query->where('university', 'like', "%{$searchUni}%");
                    })
                    ->when($searchCity, function ($query) use ($searchCity) {
                        return $query->where('city', 'like', "%{$searchCity}%");
                    })
                    ->when($searchTitle, function ($query) use ($searchTitle) {
                        return $query->where('title', 'like', "%{$searchTitle}%");
                    })
                    ->where('status','=',1)->orderBy('created_at', 'desc')->paginate(18)
                    ->appends(request()->query());
            } else {
                $ads = advertise::where('status','=',1)->orderBy('created_at', 'desc')->paginate(18);

            }
            $i = 0;
            foreach($ads as $sd){
                $images = image::where('adver_id', $sd->id)->get();
    //            return response()->json($images);
                if(!$images->isEmpty()){
    //                return response()->json($images);
                    $ads[$i]->image1= $images[0]->image;
                }
                $i=$i+1;
            }
            return new productCollection($ads);
   }

我的 vue-route.js 中的 Axios:

    axios.post("/api/product/search/",this.searchbox).then(response => {

                        if( response.data.data.length === 0 ) {
                            this.showTeezers = "nothing"
                            this.$store.state.teezers=[]

                        } else {
                            this.$store.state.teezers=response.data.data
                        }
                    }).catch(error => {
                        console.log(error)
                    })

当我在本地主机中运行项目时,它运行良好,但当我将其移至 host (Linux 服务器)时,它不起作用。主机中出现此错误:

"The GET method is not supported for this route. Supported methods: POST.",405 method not allowed

3个回答

尝试将回调与 uses 方法匹配。

Route::post('product/search', ['uses' => 'Api\productController@search']);
rüff0
2019-11-04

我的错误是在以下代码中的搜索后使用了 /: axios.post("/api/product/search/",this.searchbox).then(response => {..} 我删除了它,它是正确的。谢谢大家。

2019-11-05

好的,我将列出我能想到的所有方法:

您是否尝试过清除主机中的缓存?如果在 putty 中输入“php artisan route:cache”,则会出现错误,很可能是您的路由中存在错误

您是否在“php artisan route:list”中看到了要使用的路由?如果没有,则问题在于 laravel 未采用您的路由

最后,我认为这听起来很糟糕,但请尝试检查服务器中的内容是否与本地主机中的内容匹配。

Dante
2019-11-04