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

时间:2012-05-20 01:46:58

标签: javascript html forms html-form-post

作为游戏的一部分,我希望将值(动态地)分配给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>

问题是我从按钮获得了可疑结果,但没有得到span-'trigger'。

预期且正确的终端窗口打印(在我将3分配为得分后):

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

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

2 个答案:

答案 0 :(得分:2)

function postIt()   {       
        var form = document.getElementById('postForm');

        document.getElementById('userField').value = "Testing Name";
        document.getElementById('scoreField').value = score;
        alert(score);

        form.submit();   
    }

这是一个fiddle

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

答案 1 :(得分:0)

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();   
}