【问题标题】:Data fetching from database using vuejs in laravel 8在 laravel 8 中使用 vuejs 从数据库中获取数据
【发布时间】: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()) - 需要找出哪里出了问题

标签: database laravel vue.js


【解决方案1】:

我相信您希望在创建组件时调用 created 方法。从 methods 属性中删除创建的函数并将其添加到导出的默认对象中。

export default {
    data() {...},
    methods: {...}, 
    created() {...}
}

【讨论】:

  • 同时确认你将common.js文件注册为全局mixin或者在admin.vue文件中注册
  • 感谢您的帮助!在我将创建的方法放在方法之外之后它就可以工作了:{...},但是你能告诉我为什么它在方法内部不起作用:{...}
  • 现在的问题是——我要刷新页面看看有没有插入数据
  • created() 是 vue 组件的生命周期钩子,它在 vue 组件的生命周期中自动运行。 methods:{} 中的那些需要显式运行
  • 你有什么解决方案可以让 created() 在 methode:{...} 中运行吗?
猜你喜欢
  • 2016-07-18
  • 1970-01-01
  • 2021-07-02
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 1970-01-01
  • 2020-08-17
相关资源
最近更新 更多