2012-03-27 63 views
14

可能重複:
JavaScript post request like a form submit通行證JavaScript變量PHP POST

我在JS計算出的值,我想作爲輸入形式的一部分傳遞給一個PHP腳本。我怎樣才能將JS的值作爲POST參數獲得值?

基本上,在提交時,我需要將total var通過郵寄傳遞給下一個腳本。

想到的第一個想法是創建一個無形的輸入表單,它具有值並且與表單一起輸入,這有可能嗎?

+0

看到這個:HTTP: //stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit – 2012-03-27 01:37:04

回答

13

是的,您可以使用<input type="hidden" />並在javascript代碼中設置該隱藏字段的值,以便與其他表單數據一起發佈。

+3

只要確保隱藏文本框位於表單標籤內。 – javram 2012-03-27 01:38:19

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 2015-08-25 08:27:44

+1

@Oliver數據鍵是「全部」,所以'$ _POST ['total']' – Phil 2015-08-25 09:12:03

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;如果你想使用,則最後一個參數是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> 

那麼你的JavaScript是這樣的:

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