【发布时间】:2021-09-29 14:39:01
【问题描述】:
我正在尝试在 Laravel Vue 中使用 jQuery Select2。但是当我使用我的基本网址时,我在下面出现错误。但是,当我使用像https://countriesnow.space/api/v0.1/countries/population/cities 这样的另一个API 服务时,没关系,可以检索数据。怎么了?我一直在尝试解决这个问题,但没有任何效果。
Access to XMLHttpRequest at 'http://localhost/my-project/laravue/api/staff/categories/search-sub-categories/?_type=query' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.
路线
Route::get('categories/search-sub-categories/{id}', [CategoryController::class, 'searchSubCategories']);
控制器
public function searchSubCategories(Request $request, $id)
{
$keyword = $request->get('q');
$subCategories = SubCategory::with('category')
->orWhereDoesntHave('category')
->OrWhereHas('category', function ($q) use ($id) {
$q->where('id', $id);
})
->where("subcategory_name", "LIKE", "%$keyword%")
->get();
return response()->json([
'sub_categories' => $subCategories,
]);
}
查看
<div v-show="isFormAssignCategoryMode" class="form-group">
<select
selected="selected"
multiple
class="form-control sub_categories"
name="sub_categories[]"
id="sub_categories"
></select>
</div>
$('#sub_categories').select2({
ajax: {
url: `${BASE_URL}/api/staff/categories/search-sub-categories/` + self.form.id,
crossDomain: true,
cors: true,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PATCH, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Origin, Content-Type, Authorization, X-Auth-Token',
},
processResults: function (data) {
console.log(data);
return {
results: data.map(function (item) {
return {
id: item.id,
text: item.name,
};
}),
};
},
},
});
【问题讨论】:
标签: laravel vue.js cors jquery-select2