【发布时间】:2020-11-24 23:12:16
【问题描述】:
我正在尝试使用 vuejs(在 laravel 8 框架中)从数据库中获取数据。但它不会产生任何数据,也不会产生错误。我在这里分享一些截图和代码:
查看
数据库
web.php
Route::get('/','App\Http\Controllers\vuecrud@index');
Route::post('/app/add_data','App\Http\Controllers\adminController@addTag');
Route::get('/app/get_data','App\Http\Controllers\adminController@show');
Route::any('{slug}','App\Http\Controllers\vuecrud@index');
管理员控制器
public function show()
{
return admin::all();
}
管理员(模型)
class admin extends Model
{
//use HasFactory;
protected $fillable = ['tagName'];
}
app.js(js 内部)
require('./bootstrap');
window.Vue = require('vue')
import router from './router'
import ViewUI from 'view-design';
import 'view-design/dist/styles/iview.css';
import common from './common'
Vue.mixin(common)
Vue.use(ViewUI);
('mainapp', require('./components/mainapp.vue').default)
const app = new Vue({
el: '#app',
router
})
router.js
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
import firstPage from './components/pages/firstvuepage'
import aboutpage from './components/pages/aboutus'
import admin from './components/pages/admin'
const routes = [
{
path:'/firstpage',
component: firstPage
},
{
path:'/about',
component: aboutpage
},
{
path:'/admin',
component: admin
}
]
export default new Router({
mode:'history',
routes
})
admin.vue(我试图从数据库中获取数据)
<template>
<div>
<table class="_table">
<tr>
<td>Name</td>
<td>Action</td>
</tr>
<tr v-for="(getname, i) in admins" :key="i" v-if="admins.length">
<td class="_table_name">{{getname.tagName}}</td>
<td>
<Button class="btn btn-info" size="small">Edit</Button>
<Button class="btn btn-danger" size="small">Delete</Button>
</td>
</tr>
</table>
</div>
</template>
<script>
export default {
data (){
return {
data:{
tagName:''
},
modal1: false,
isAdding: false,
admins: []
}
},
methods :{
async created(){
const res = await this.callApi('get','app/get_data')
if(res.status==200) {
this.admins = res.data
}else{
this.smr()
}
}
}
}
</script>
common.js 文件
export default {
data(){
return{
}
},
methods:{
async callApi(method, url, dataobject){
try{
return await axios({
method: method,
url: url,
data: dataobject
});
}catch(e){
return e.response
}
}
}
【问题讨论】:
-
检查正在填充的数据的最简单方法是通过 vue-devtools - 管理员的值。您还可以通过在 if(res==200) 块
console.log(res)中插入console.log 语句来检查axios 请求接收到的数据,并检查控制台中的值 -
尝试在网址
this.callApi('get', '/app/get_data')添加正斜杠 -
不工作,但我得到一个警告:它说“DevTools 无法加载 SourceMap:无法为 127.0.0.1:8000/js/iview.js.map 加载内容:HTTP 错误:状态代码 404,net::ERR_HTTP_RESPONSE_CODE_FAILURE”
-
从 Filter Components 面板中找到
admin组件,然后在下面的面板中查看admins有什么值。如果不是你所期望的。转到Network选项卡并找到/app/get_data的条目并查看收到的响应 -
admins属性是一个空数组 - 不是我们想要的。您需要通过console.log(res)检查并查看网络选项卡,找到/api/get_data并检查它的响应。需要确定是否按预期从服务器接收到数据 - 控制器中的dd(admin::all())- 需要找出哪里出了问题