Próbuję przekazać wiele parametrów za pomocą metody POST przy użyciu AJAX do mojego pliku PHP, dzięki czemu mogę zrobić zapytanie do bazy danych MySQL.Przekazywanie wielu parametrów przez POST przy użyciu ajax do php
plik 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>
Jest to plik JavaScript gdzie pomyślnie przejść wartość rozwijaną i wartości tekstowe i przechowywać je w sv
i searchtext11
zmiennych odpowiednio. Ale problemem jest przekazanie dwóch wartości do pliku PHP. Problem wydaje się być w the_data
zmiennej, która jest przekazywana w xmlhttp.send(the_data);
Funkcja searchone()
się następująco:
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;
}
}
}
kod PHP ta działa tylko wtedy, gdy
var the_data='select='+sv;
searchone.php
<?php
if (isset($_POST['select'])) {
$str = $_POST['select']; // get data
echo $str;
}
?>
Jak mogę uzyskać zarówno listę rozwijaną, jak i wartość pola tekstowego do mojego pliku PHP, dzięki czemu mogę utworzyć kwerendę sql przy użyciu tych zmiennych.
Dodam, że 'okno' 'window.encodeURIComponent' jest niejawny i można go pominąć ... – Basic
Proszę również zaznaczyć, czy powinienem używać ' if (isset ($ _ POST ['select'])) 'lub' if (isset ($ _ POST [' wybierz '], $ _POST [' text '])) – akashaggarwaal
@akashaggarwaal Proponuję sprawdzić oba, jeśli potrzebujesz obu. @Basic 'window' można w większości przypadków pominąć, ale kiedy używam _methods_ z' window', mój styl to zachować. Na przykład użyłbym 'window.setTimeout'. –