簡體   English   中英

如何在不使用原始 Javascript 重定向的情況下發布表單?

[英]How Do I Post A Form Without Redirecting Using Raw Javascript?

我看過幾篇關於如何使用 AJAX 發布表單的帖子,但我對簡化選項感到好奇。

這是我正在嘗試的精簡版本:

<form id="message-form" method="POST" action="/send-message" onsubmit="return false;">
    <input type="text" name="message"><br/>
    <input type="text" name="phone_number"><br/>
    <button type="button" onclick="return trysubmit()">Send Message</button>
</form>

<script>
    function trysubmit()
    {
        document.getElementById("message-form").submit();
        
        //notify user of success 

        //cancel the redirect
        return false; 
    }
</script>

在這種情況下,表單被提交,但重定向仍然發生。

像上面這樣的事情是可能的,還是我必須手動構建這樣的 AJAX 請求? 表單序列化javascript(無框架)

var form = document.getElementById('message-form');
var data = new FormData(form);
var req = new XMLHttpRequest();
req.send(data);

除非求助於像發布到一個虛擬目標這樣的黑客,否則 AJAX 是要走的路。

這有效:

    const form =  document.querySelector("#message-form");
    form.addEventListener("submit", event => {
        event.preventDefault()

        let status = "";
        const data = new FormData(form);
        const req = new XMLHttpRequest();
        try{
            req.open("POST", '/send-message');
            req.send(data);
            status = "success";
        }
        catch{
            status = "failure";
        }
        notifyuser(status);
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM