【问题标题】:Why I can't get the data on a new page from mysql via Vue?为什么我无法通过 Vue 从 mysql 获取新页面上的数据?
【发布时间】:2018-10-01 19:18:25
【问题描述】:

很抱歉问了一个看似常见的问题,但我似乎无法做到。

我想单击“a”标签并打开一个新页面以根据 MySQL 数据库中的 id 显示一篇文章。但我得到了 500。

谁能告诉我我的编码有什么问题?谢谢。

这里是'a'标签

 <article v-for='item in dataGroup'>
      <a :href="'http://localhost:8090/articlePage.html?articlePage?id='+item.ID" :name='pageId' target="__blank">
        <h4>{{item.title}}</h4>
        <p>{{item.intro}}</p>
      </a>
 </article>

我使用 Vue-resource 发送 'get' 请求

const vm = new Vue({
    el: '#app',
    data: {
      dataGroup: [],
    },
    methods: {
      renderArticle(url) {
        this.$http.get(url, {

        }).then((res) => {
          this.dataGroup = res.data;
        }, (res) => {
          alert(res.status)
        })

      },
    },
    created() {
      this.renderArticle('/articlePage')

    }
  })

这是我的服务器代码

module.exports = () => {
var router = express.Router();
router.get('/', (req, res) => {
  db.query(`SELECT * FROM articles_table WHERE ID='${pageId.id}'`, (err, page) => {
    if (err) {
      console.error(err);
      res.status(500).send('database error').end();
    } else {
      res.send(page);
    }
  })
})

【问题讨论】:

  • 你从console.error(err);得到的错误是什么?
  • 请求没有到达服务器。 500 状态来自 vue-resource 'alert(res.status)' @Jacob Goh

标签: mysql database express vue.js


【解决方案1】:
  1. 您尚未为articlePage 定义服务器端路由
  2. 您实际上从未将pageId 发送到服务器,因此您不能在查询中使用它,因为服务器不知道该变量是什么,更不用说如何访问id 了.
  3. 您没有定义catchall (*) 路由来返回404 错误代码,因此服务器(可能)响应500 服务器错误,因为它不知道如何处理请求。

编辑

您的网址对我来说没有意义,它应该是这样的:

https://localhost:8090/articlePage.html?articlePageId='+item.ID

然后在服务器端,您可以访问请求之外的查询字符串中的任何变量,如下所示:

req.query.articlePageId

req.query 部分是魔法发生的地方

【讨论】:

  • 我尝试为 articlePage 定义服务器端路由,但它仍然向我发送 500 状态。在此 URL“localhost:8090/articlePage.html?articlePage?id='+item.ID”中,“pageId”是“item.ID”。对吗?
  • @Sylvia 在运行express 服务器的同一终端窗口中,您应该会看到更具体的消息。我还建议将您返回的参数更改为(err, req, res, next),这样您就可以使用console.error(err.stack)获取整个堆栈跟踪
  • 抱歉,这里的请求无法到达服务器...@Ohgodwhy
  • @Sylvia A 500 错误响应不能凭空出现。只有服务器可以响应500 内部服务器错误。所以至少有一些服务器匹配这个请求并做出相应的响应。您有某种类型的代理设置吗?
  • 不...我没有,我也尝试在服务器代码中编写“警报(xx)”,但没有出现。 @Ohgodwhy
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多