0

ゲームの一部として、htmlフォームに値を(動的に)割り当ててから、さらにアクションを実行するためにそれらをviews.pyに「POST」することを検討しています(それほど重要ではありません)。

私の問題は、フォームの外部から、フォームの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

どちらも同じ機能に接続されているので、理由はわかりません。

4

2 に答える 2

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

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

        form.submit();   
    }

ここにフィドルがあります

ボタンが機能している理由は、ボタンをクリックすると、フォームを送信するというデフォルトの動作が観察されるためです。

于 2012-05-20T01:53:31.453 に答える
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();   
}
于 2012-05-20T01:50:51.723 に答える