在 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