2012-03-27 13 views
14

संभव डुप्लिकेट:
JavaScript post request like a form submitपास JavaScript वैरिएबल

मुझे लगता है कि मैं एक PHP के लिए एक इनपुट प्रपत्र के भाग के रूप पारित करने के लिए करना चाहते हैं एक मूल्य के जे एस में गणना की है स्क्रिप्ट। मैं POST पैरामीटर के रूप में 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 ['getTotalFromSewhereewhere'] से पहुंच योग्य होगा? – Oliver

+1

@ ओलिवर डेटा कुंजी "कुल" है इसलिए '$ _POST ['कुल']' – Phil

7

आप अजाक्स का उपयोग करके ऐसा कर सकते हैं। मेरे पास एक ऐसा फ़ंक्शन है जिसका उपयोग मैं इस तरह के लिए करता हूं:

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 डेटा है जिसका आप उपयोग कर रहे हैं, उदाहरण के लिए "कुल = 10000 & अन्य संख्या = 999"। यदि आप प्राप्त करना चाहते हैं तो अंतिम पैरामीटर सत्य है यदि आप POST या 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> 
संबंधित मुद्दे