2012-03-27 3 views
14

가능한 중복 :
JavaScript post request like a form submit패스 JavaScript 변수

I는 I은 PHP의 입력 폼의 일부로서 전달하고자 JS에서 계산 된 값이

스크립트. POST 매개 변수로 JS 값을 PHP로 가져 오는 방법은 무엇입니까?

기본적으로 제출시 total var를 게시를 통해 다음 스크립트로 전달해야합니다.

마음에 오는 첫 번째 아이디어는 그 안에 값이 있고 양식과 함께 입력되는 보이지 않는 입력 양식을 만드는 것입니다.

+0

이를 참조하십시오 : HTTP : //stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit –

답변

13

예, <input type="hidden" />을 사용할 수 있으며 자바 스크립트 코드에서 숨겨진 필드의 값을 설정하여 다른 양식 데이터와 함께 게시 할 수 있습니다.

+3

숨겨진 텍스트 상자가 양식 태그 안에 있다는 것입니다. – javram

3

숨겨진 양식 요소에 대한 아이디어는 확실합니다. 이 같은 것

<form action="script.php" method="post"> 
<input type="hidden" name="total" id="total"> 
</form> 

<script type="text/javascript"> 
var element = document.getElementById("total"); 
element.value = getTotalFromSomewhere; 
element.form.submit(); 
</script> 

물론 이것은 script.php으로 위치를 변경합니다. 사용자에게 보이지 않게하려면 AJAX를 사용하는 것이 좋습니다. 다음은 간결성을 위해 jQuery 예제입니다. 양식 또는 숨겨진 입력이 필요하지 않습니다.

$.post("script.php", { total: getTotalFromSomewhere }); 
+0

변수는'$ _POST [ 'element']'또는'$ _POST [ 'getTotalFromSomewhere']'에서 액세스 할 수 있습니까? – Oliver

+1

@Oliver 데이터 키가 "total"이므로 $ _POST [ 'total']' – Phil

7

Ajax를 사용하여이를 수행 할 수 있습니다. 다음과 같이 사용하는 함수가 있습니다.

function ajax(elementID,filename,str,post) 
{ 
    var ajax; 
    if (window.XMLHttpRequest) 
    { 
     ajax=new XMLHttpRequest();//IE7+, Firefox, Chrome, Opera, Safari 
    } 
    else if (ActiveXObject("Microsoft.XMLHTTP")) 
    { 
     ajax=new ActiveXObject("Microsoft.XMLHTTP");//IE6/5 
    } 
    else if (ActiveXObject("Msxml2.XMLHTTP")) 
    { 
     ajax=new ActiveXObject("Msxml2.XMLHTTP");//other 
    } 
    else 
    { 
     alert("Error: Your browser does not support AJAX."); 
     return false; 
    } 
    ajax.onreadystatechange=function() 
    { 
     if (ajax.readyState==4&&ajax.status==200) 
     { 
      document.getElementById(elementID).innerHTML=ajax.responseText; 
     } 
    } 
    if (post==false) 
    { 
     ajax.open("GET",filename+str,true); 
     ajax.send(null); 
    } 
    else 
    { 
     ajax.open("POST",filename,true); 
     ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
     ajax.send(str); 
    } 
    return ajax; 
} 

첫 번째 매개 변수는 변경하려는 요소입니다. 두 번째 매개 변수는 변경할 요소에로드 할 파일 이름입니다. 세 번째 매개 변수는 사용중인 GET 또는 POST 데이터입니다 (예 : "total = 10000 & othernumber = 999"). 마지막 매개 변수는 POST를 사용하려면 true이고, GET하려면 false입니다.

12

이렇게하려면 많은 방법이 있습니다. 숨겨진 양식 요소로 당신이 묻는 방식에 관해서.

양식 안에이 양식 요소를 만듭니다

<input type="hidden" name="total" value=""> 

따라서이 같은 양식 : 다음

<form id="sampleForm" name="sampleForm" method="post" action="phpscript.php"> 
<input type="hidden" name="total" id="total" value=""> 
<a href="#" onclick="setValue();">Click to submit</a> 
</form> 

이 같은 자바 스크립트 뭔가 :

<script> 
function setValue(){ 
    document.sampleForm.total.value = 100; 
    document.forms["sampleForm"].submit(); 
} 
</script>