2012-03-27 27 views
14

thể trùng lặp:
JavaScript post request like a form submitđèo Javascript Variable để PHP POST

Tôi có một giá trị tính bằng JS mà tôi muốn vượt qua như một phần của một hình thức đầu vào cho một PHP kịch bản. Làm thế nào tôi có thể nhận được một giá trị giá trị JS cho PHP như một tham số POST?

Về cơ bản, khi gửi, tôi cần số total var sẽ được chuyển qua bài đăng tới tập lệnh tiếp theo.

Ý tưởng đầu tiên mà bạn nghĩ đến là tạo biểu mẫu đầu vào vô hình có giá trị trong đó và được nhập bằng biểu mẫu, có thể không?

+0

Xem này: http: //stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit –

Trả lời

13

Có, bạn có thể sử dụng một <input type="hidden" /> và đặt giá trị của trường ẩn đó trong mã javascript của bạn để nó được đăng với dữ liệu biểu mẫu khác của bạn.

+3

Chỉ cần đảm bảo hộp văn bản ẩn nằm bên trong thẻ biểu mẫu. – javram

3

Ý tưởng của bạn về yếu tố biểu mẫu ẩn là chắc chắn. Một cái gì đó như thế này

<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> 

Tất nhiên, điều này sẽ thay đổi vị trí thành script.php. Nếu bạn muốn làm điều này vô hình cho người dùng, bạn sẽ muốn sử dụng AJAX. Đây là một ví dụ jQuery (cho ngắn gọn). Không có biểu mẫu hoặc đầu vào bị ẩn nào được yêu cầu

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

sẽ biến sau đó có thể truy cập từ '$ _POST ['element']' hoặc từ '$ _POST ['getTotalFromSomewhere']'? – Oliver

+1

@ Phân phối khóa dữ liệu là "tổng" nên '$ _POST ['tổng']' – Phil

7

Bạn có thể thực hiện việc này bằng cách sử dụng Ajax. Tôi có một chức năng mà tôi sử dụng cho một cái gì đó như thế này:

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

Tham số đầu tiên là phần tử bạn muốn thay đổi. Tham số thứ hai là tên của tên tệp bạn đang tải vào phần tử bạn đang thay đổi. Tham số thứ ba là dữ liệu GET hoặc POST bạn đang sử dụng, ví dụ: "total = 10000 & othernumber = 999". Tham số cuối cùng là đúng nếu bạn muốn sử dụng POST hoặc false nếu bạn muốn GET.

12

Có rất nhiều cách để đạt được điều này. Liên quan đến cách bạn đang yêu cầu, với một yếu tố hình thức ẩn.

tạo yếu tố hình thức này bên trong hình của bạn:

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

Vì vậy, hình thức của bạn như thế này:

<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> 

Sau đó, một cái gì đó javascript của bạn như thế này:

<script> 
function setValue(){ 
    document.sampleForm.total.value = 100; 
    document.forms["sampleForm"].submit(); 
} 
</script> 
Các vấn đề liên quan