2012-05-20 4 views
0

게임의 일부로 html 형식에 값을 (dymaically) 할당 한 다음 해당 항목을 "POST"하여 추가 작업 (정말 중요하지 않음)외부에서 POST 메소드를 트리거 할 수 없음 <form>

내 문제는 내가 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> 

문제는 '스팬 'trigger를 버튼에서 의심스러운 결과를 얻을 수 있지만이다.

예상하고, 올바른, 터미널 창 인쇄 (내가이 점수로 3 할당 한 후) : 왜이 ​​모두 동일하게 연결되어 있기 때문에 정말하지만, 볼 수없는

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

기능..? 여기

+0

왜 그런 식으로 제출합니까? – gdoron

+0

이것은 장고와 아무 관련이 없습니다. 그 태그 없애기. –

+0

이유 form = document.createElement ('postForm'); 그것은 getElementById가 아니어야합니까? –

답변

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

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

     form.submit(); 
    } 

당신이 그것을 클릭 할 때, 당신이 양식을 제출하는 기본 행동의 관찰하기 때문에 버튼이 작동되는 fiddle

이유는있다.

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

DOM을 두 번 쿼리 할 필요가 없습니다. – gdoron

+0

알아요.하지만 코드를 완벽하게 최적화하기 위해 여기에 온 것은 아니며, 단지 적응할 문제에 대한 해결책을 제공합니다 ... 아이디어를 전달하기 위해 신경 쓰지만,이 경우에는 – Sebas