无法从外部触发 POST 方法表单<表单>

Can't trigger POST-method form from outside <form>

本文关键字:表单 方法 POST 从外部      更新时间:2023-09-26

作为游戏的一部分,我希望将值(动态地(分配给html表单,然后将它们"POST"到 views.py 上以进行进一步的操作(不是很重要(

我的问题是我似乎无法从外部触发表单的 POST 部分。啊。

法典:

.JS:

var score,x;
    function setScore(x){
        score=x;
        alert(score);
    }
    function getScore(){
        return score;
    }

    function postIt()   {       
        form = document.createElement('postForm');
        document.getElementById('userField').value = "Testing Name";
        document.getElementById('scoreField').value = score;
        alert(score);
        form.submit();   
    }

和 html:

     <form action="" method="post" id="postForm">{% csrf_token %}
     <input type="hidden" id="userField" name="user"></input> Namn.<br>
     <input type="hidden" id="scoreField" name="score"></input> Score.<br>
     <button onclick="postIt()">Shoot</button>
<a href="javascript:setScore(1)">1</a> -     
<a href="javascript:setScore(2)">2</a> - 
<a href="javascript:setScore(3)">3</a> -
<a href="javascript:setScore(4)">4</a> -
<a href="javascript:setScore(5)">5</a> -
<a href="javascript:setScore(6)">6</a>   
<p>
<span onclick="postIt()">Skicka</span>   
     </form>

问题是我从按钮中得到了可疑的结果,但没有从跨度"触发器"中得到。

预期且正确的终端窗口打印(在我分配 3 作为分数之后(:

Testing Name
3
[20/May/2012 03:41:43] "POST / HTTP/1.1" 200 1854

不过,我真的不明白为什么,因为它们都连接到同一个功能..?

function postIt()   {       
        var form = document.getElementById('postForm');
        document.getElementById('userField').value = "Testing Name";
        document.getElementById('scoreField').value = score;
        alert(score);
        form.submit();   
    }

这是一把小提琴

按钮工作的原因是,当您单击它时,您会观察到它的默认行为是提交表单。

function postIt()   {       
    form = document.createElement('postForm');
    document.getElementById('userField').value = "Testing Name";
    document.getElementById('scoreField').value = score;
    alert(score);
    form.appendChild(document.getElementById('userField'));
    form.appendChild(document.getElementById('scoreField'));
    form.submit();   
}