vue.js - 我有 Axios,它从 2 个控制器返回 2 个请求,第二个请求不返回任何数据
问题描述
这是配置 Vue
import Api from './Api'
import Csrf from './Csrf'
export default {
showProd(id) {
return Api.get('/products/' + id)
},
showCat(){
return Api.get('/products/category')
},
loadProds () {
return Api.get('/products')
}
}
这是方法内部的内容:()
showProd (id) {
Products.showProd(id).then((response) => {//this code works
this.show1prod = response.data
console.log(this.show1prod.product_name)
})
Products.showCat().then((responseCat) => {//this returns empty
this.showCat = responseCat.data
console.log(this.showCat.category_name)
})
.catch((error) => {
alert(error)
})
}
这是我的控制器和第二个请求的 api,我都有 200 状态,所以我想我正在访问后端,但数据为空
Route::get('/products/category', 'ProductsCategoryController@category');
class ProductsCategoryController extends Controller
{
public function category()
{
$category = ProductsCategory::all();
return response()->json($category);
}
}
解决方案
您能否检查一下在后端定义路由的顺序。
您应该products/category
在之前 products/{id}
定义,
否则当您调用products/category
控制器时products/{id}
将使用id = 'category'
.
也许这就是你的问题。
你应该去的路线订购。
Route::get('/products/category', 'ProductsCateogryController@category');
Route::post('/products/{id}', 'BlahController@blah');
Route::get('/products', 'BlahBlahController@blahBlah');
如果您以不同的顺序定义路线,将会出现问题。
您可以在控制器中添加某种日志记录,以查看实际调用的是哪个控制器。
\Log::info('inside products');
\Log::info('inside products/id');
\Log::info('inside products/cateogry');
推荐阅读
- c# - C# 当我只读取而不更改队列时,我应该使用锁定语句吗?
- tensorflow2.0 - GPflow 2.0 是否支持将先验放在 GP 的(超)参数上?
- windows - 如何在批处理文件中正确使用 cd 命令?
- jenkins - 如何知道是谁远程触发了 Jenkins 的工作?
- css - Bootstrap 网格系统区分 2 种屏幕尺寸
- package - 如何在 R 版本 4.0.0 中安装 mixOmics 包?
- selenium - SeleniumGrid:org.openqa.selenium.SessionNotCreatedException:无法创建新服务:ChromeDriverService 构建信息:版本:'3.141.59'
- python - 如何在 Symfony 中从类中调用 Python 脚本
- apostrophe-cms - 直接向撇号图像小部件添加选项
- android - AdMob 在我使用测试 ID 时有效,但在我使用真实 ID 时不显示广告