You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js项目中POST方法无法生效,请求排查原因

问题原因及解决方案

你的代码存在几个关键问题,导致产品数据无法成功添加:

1. 提交按钮无法触发表单提交事件

表单内的按钮是 <input type="button">,该类型按钮不会触发form的submit事件,你绑定的@submit.prevent="submit"自然不会执行。
解决:将按钮类型改为submit:

<input type="submit" value="Add Product">

2. ID生成方式不兼容JSON格式

你用(Math.random() * 10000000000000000n)生成BigInt类型ID,但JSON不支持BigInt数据类型,提交给JSON Server时会触发错误。而且JSON Server默认会自动生成递增ID,完全无需手动设置。
解决:移除手动生成ID的代码,提交对象仅传递name和price:

body: JSON.stringify({ name: name.value, price: price.value })

3. Price的初始类型与输入框不匹配

price绑定的是number类型输入框,但你初始化时用了ref("")(字符串类型),提交时可能会把字符串传给后端,导致JSON Server无法正确处理数据。
解决:将price初始化为数字类型:

const price = ref(0);

4. 未处理请求错误

当前代码没有捕获fetch请求的错误,就算请求失败(比如JSON Server未启动、地址错误),也会直接跳转页面,你无法得知问题所在。
解决:添加错误捕获逻辑:

const submit = async () => {
  try {
    const response = await fetch("http://localhost:3000/products", {
      method: "POST",
      headers: { "Content-type": "application/json" },
      body: JSON.stringify({ name: name.value, price: price.value })
    });
    if (!response.ok) {
      throw new Error("请求失败");
    }
    await router.push("admin/products");
  } catch (err) {
    console.error(err);
    alert("添加产品失败,请检查JSON Server是否运行");
  }
};

额外检查项

  • 确认JSON Server已启动,且请求地址http://localhost:3000/products正确
  • 查看浏览器控制台的Network标签,检查POST请求是否发送成功、是否有报错信息

内容的提问来源于stack exchange,提问作者iamaprogrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:01:01