2013-06-29 8 views
6

PHP के लिए मैं अपने PHP फ़ाइल के लिए AJAX का उपयोग कर POST पद्धति द्वारा एक से अधिक पैरामीटर पारित करने के लिए इतना है कि मैं एक MySQL डेटाबेस के लिए एक क्वेरी कर सकते हैं कोशिश कर रहा हूँ पोस्ट द्वारा एक से अधिक पैरामीटर पासिंग।ajax का उपयोग कर

HTML फ़ाइल:

 <div class="dropdown dropdown-dark"> 
      <select class="dropdown-select" id="searchselect11" required> 

         <option value="faculty">Faculty</option> 
         <option value="dept">Dept.</option> 
         <option value="course">Course</option> 
         <option value="year">Year</option> 
         <option value="name">Name</option> 

      </select> 
     </div> 


<td style="padding:5px;"> <input type="text" id="searchtext11" required></td> 

<button id="searchgo1" onclick="searchone()"></button> 

यह है जहाँ मैं सफलतापूर्वक लटकती मूल्य और पाठ बॉक्स मूल्य तक पहुंचने और उसे sv और searchtext11 चर में उन्हें क्रमश स्टोर जावास्क्रिप्ट फ़ाइल है। लेकिन समस्या यह है कि दो मानों को PHP फ़ाइल में पास करना है।

function searchone() 
{ 
//alert("hi"); 

var xmlhttp; 
var sel = document.getElementById('searchselect11'); 
var sv = sel.options[sel.selectedIndex].value; 
var searchtext11= document.getElementById("searchtext11").value; 
var the_data = 'select='+sv+'text='+searchtext11; 


if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 




    xmlhttp.open("POST", "searchone.php", true);   
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");    
    xmlhttp.send(the_data);  


    xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4) { 
     document.getElementById("searchresults").innerHTML = xmlhttp.responseText; 
    } 
    } 
} 

इस PHP कोड को केवल तभी

var the_data='select='+sv; 

searchone.php

काम करता है: समस्या के रूप में निम्नानुसार the_data चर कि xmlhttp.send(the_data);

searchone() समारोह में पारित हो जाता है में हो रहा है

<?php 


if (isset($_POST['select'])) { 
    $str = $_POST['select']; // get data 

    echo $str; 
} 
?> 

कैसे मैं मिलता है दोनों PHP फ़ाइल में ड्रॉपडाउन और टेक्स्टबॉक्स मान दोनों ताकि मैं उन चर का उपयोग कर एसक्यूएल क्वेरी बना सकूं।

उत्तर

8

आप एक ampersand का उपयोग करने की जरूरत है, बस के रूप में अगर यह एक प्राप्त था। इसके अलावा, आप encode your text यकीन है कि यह किसी भी अक्षर है कि एक विशेष अर्थ

var the_data = '' 
    + 'select=' + window.encodeURIComponent(sv) 
    + '&text=' + window.encodeURIComponent(searchtext11); 
// ^     ^^ 
हो सकता था शामिल नहीं है बनाने के लिए चाहिए

आप मैन्युअल रूप से सर्वर साइड डिकोड करने के लिए क्योंकि आप पहले से दे रहे हैं यह पता की जरूरत नहीं है कि पोस्ट डेटा x-www-form-urlencoded है।

+0

पर मुझे लगता है कि 'window' जोड़ेंगे 'की window.encodeURIComponent' निहित है और हटाया जा सकता है ... – Basic

+0

कृपया यह भी प्रकाश डाला है कि क्या मैं का उपयोग करना चाहिए ' अगर (isset ($ _ पोस्ट [ 'का चयन करें'])) 'या' अगर (isset ($ _ पोस्ट [ ' चुनें '], $ _POST [' text '])) – akashaggarwaal

+0

@akashaggarwaal मैं दोनों की जांच करने का सुझाव दूंगा यदि आपको दोनों की आवश्यकता है। अधिकांश मामलों में @ बासिक 'विंडो' छोड़ा जा सकता है, लेकिन जब मैं' विंडो 'के _methods_ का उपयोग करता हूं, तो मेरी शैली इसे रखना है। तो, उदाहरण के लिए, मैं 'window.setTimeout' का भी उपयोग करूंगा। –

3

इस स्ट्रिंग में & जोड़ें:

var the_data = 'select='+sv+'&text='+searchtext11; 
+0

यह काम करेगा यदि मैं एक पंक्ति –

+0

@ Rush.2707 में किसी भी चर को पास करता हूं: 'var data =' var1 = '+ var1 +' और var2 = '+ var2 +' और var3 = '+ var3 +' ... etc.' स्ट्रिंग की लंबाई केवल द्वारा सीमित है [GET अनुरोध लंबाई] (http://stackoverflow.com/questions/2659952/maximum-length-of-http-get-request) (~ 8KB)। इसके अलावा, यह बेहतर उपयोग करने के लिए है [encodeURIComponent()] (https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) हर चर – vladkras

संबंधित मुद्दे