【问题标题】:Cannot POST /path无法发布/路径
【发布时间】:2021-02-20 14:02:18
【问题描述】:

我浏览了多篇关于此的帖子,但似乎无法确定问题所在。我正在为一个组织做一个捐赠页面,需要这个来检查贝宝是否正常工作。这是我的表单和 app.post 之间的错误。我得到的错误是:无法 POST /path 。不能使用 / 因为它是我的联系表单的路径

   app.get("/donate", (req, res) => res.sendFile(__dirname + "views/donate.html"));
    app.post("/done", (req, res) => {
        const create_payment_json = {
            intent: "sale",
            payer: {
                payment_method: "paypal",
            },
            redirect_urls: {
                return_url: "https://asociacioncorazondiverso.org/donate.html",
                cancel_url: "https://asociacioncorazondiverso.org/donate.html",
            },
            transactions: [
                {
                    item_list: {
                        items: [
                            {
                                name: "Donación",
                                sku: "001",
                                price: "10.00",
                                currency: "USD",
                                quantity: 1,
                            },
                        ],
                    },
                    amount: {
                        currency: "USD",
                        total: "10.00",
                    },
                    description: "Donación",
                },
            ],
        };

        paypal.payment.create(create_payment_json, function (error, payment) {
            if (error) {
                throw error;
            } else {
                for (let i = 0; i < payment.links.length; i++) {
                    if (payment.links[i].rel === "approval_url") {
                        res.redirect(payment.links[i].href);
                    }
                }
            }
        });
    });

表格:

<div class="container-contact100-form-btn">
        <h2>Donación de 10 USD</h2>
        <form action="/done" method="post">
            <button type="submit" class="btn btn-warning"  value="Buy">Donación</button>
        </form>
        </div>

【问题讨论】:

  • 您是否将表单提交到您的控制台?
  • 不,当我提交表单时我没有收到
  • 能不能把顶sn-p的完整代码贴出来,而不是贴半个sn-p?
  • 我加了一些不让我发布整个代码
  • @lebaneseblonde252 在未来,请注意,通过链接到外部资源,在您的问题正文中不包含minimal, reproducible example 是不受欢迎的。外部链接往往会破坏并消除您问题的未来访问者的大部分价值。相反,编辑您的问题以包含代码的相关部分,以更好地帮助那些试图帮助您的人。另请参阅:How to Ask.

标签: javascript html node.js forms


【解决方案1】:

您的code as you posted on GitHub 并在初始问题的 cmets 中提供,显示您在此处发布的内容与您实际使用的内容之间存在显着差异。

在上面,您的&lt;form&gt;action 参数明确设置为"/done"(这似乎是正确的,因为这是您在接收服务器代码中定义的路径)。

但是,您似乎实际上正在使用的代码是在同一个 &lt;form&gt; 元素声明中引用 /path

<form action="/path" method="post">
    <button type="submit" class="btn btn-warning"  value="Buy">Donación</button>
</form>

调整 action 参数以匹配您在上述问题中的内容 ("/done"),以便您的 HTML 文档 POSTs 与您定义的正确路径/端点相匹配。

<form action="/done" method="post">
    <button type="submit" class="btn btn-warning"  value="Buy">Donación</button>
</form>

【讨论】:

  • 它们现在都被定义为路径,但我仍然收到此错误:无法 POST /path
  • 我现在在 webstorm 中得到一个未解析的 body 变量:let textBody = FROM: ${request.body.name} EMAIL: ${request.body.email} MESSAGE: ${request.body.message};我有 app.use(express.json()); app.use(express.urlencoded({extended: false })); // 这是处理 URL 编码的数据
【解决方案2】:

我在github link 上的 server.js 文件中看到此代码的语法错误

app.post("/", function(request, response) {

此部分未正确关闭,否则如果您正确使用路径,您的代码将正常工作。

【讨论】:

  • 当我点击我的捐赠按钮时,我关闭了它仍然收到此错误:无法发布/路径
  • 它的视图/路径,不仅仅是路径。 app.post(views/path, (req, res) =>*
  • 我改了。仍然在我的 html 文件中说未定义的路径。当我关闭标签时,我现在在 stackoverflow 上发布了一个未解析的主体变量,并且我加载了 bodyparser 中间件:stackoverflow.com/questions/64785920/unresolved-body-variable
  • 修复了我的服务器现在无法发布视图/路径
  • 最新推送到github的代码查看donate.html和server.js:github.com/lebaneseblonde252/AsocicaionCorzonDiverso
【解决方案3】:

尽量保留完整的 api url

<form action="http://localhost:3030/done" method="post">
    <button type="submit" class="btn btn-warning"  value="Buy">Donación</button>
</form>

【讨论】:

    【解决方案4】:

    晚上好,如果你改变你的代码怎么办

    app.post, app.get to 
    
    
    const router = express.Router();
    
    router.get('/done', (req, res) => { // do smth });
    
    app.use('/', router);
    
    app.use(router);
    

    它应该适合你。试试看;)

    【讨论】:

      【解决方案5】:

      您在 github 上托管的 server.js 文件中存在括号问题。 post 路由在 /sendmail 路由中定义。将它们移到外面,它应该可以工作。

      【讨论】:

        猜你喜欢
        • 2018-07-12
        • 2023-02-21
        • 2021-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-29
        • 1970-01-01
        相关资源
        最近更新 更多