【问题标题】:why cant I save data to database?为什么我不能将数据保存到数据库?
【发布时间】:2022-01-18 20:12:20
【问题描述】:

试图通过这个函数插入表单数据。

这是我的功能:

saveTimeline() {
      let formData = new FormData();
      formData.append("title", this.title);
      formData.append("from", this.from);
      formData.append("to", this.to);
      formData.append("events[0].year", this.year);
      formData.append("events[0].image", this.softCopyUpload);
      formData.append("events[0].content", this.content);
      formData.append("events[0].audio", this.audioFile);
      console.log(formData);
      this.$axios
        .post(this.$API + "api/v1/admin/timelines/", formData, {
          headers: {
            Authorization: "Bearer " + this.token,
          },
        })
        .then((res) => {
          if (res) {
            console.log("success");
          }
        });
    },

错误:“时间轴标题不得设置为空”

总是收到此错误。为什么?

为什么附加不起作用?

我的 JSON

{
    "title": "dvdvds",
    "from": 1990,
    "to": 2010,
    "events": [
        {
            "year": 1990,
            "image": "test.jpg",
            "content": "test content",
            "audio": "test.mp4"
        }
    ]
}

【问题讨论】:

  • 有没有其他不使用formData.append()的方式上传文件?

标签: vue.js axios


【解决方案1】:

我不知道 "this" 是什么类型的对象,但你确定 this.title 已被设置为某个东西,并且不为空吗?

【讨论】:

  • 是的。它不是空的。
  • 我没有使用追加插入数据。但是因为我必须上传文件,这就是我使用附加的原因。但它不起作用。
【解决方案2】:

好像您没有正确设置表单数据。文档建议 something like this 用于浏览器:

const params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);

【讨论】:

  • 使用的参数。前三个数据现在没有给出任何错误。现在第四个数据给出错误说“时间轴事件年份不能设置为空”
  • 这很可能是因为URLSearchParams 不会序列化对象。示例:const foo = new URLSearchParams(); foo.append("bar", {foo: "foo", bar:"bar"}); foo.toString() 返回 ` "bar=%5Bobject+Object%5D"` 您确定您用于append 的键格式正确吗?另外:您真的必须将数据作为表单数据提交吗?不支持application/json 吗?那会容易得多。
  • 是的,使用 application/json 它的工作。我认为该项目不支持附加。我不知道为什么。
猜你喜欢
  • 2012-07-05
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
  • 2020-02-15
  • 1970-01-01
相关资源
最近更新 更多