Apa yang saya tulis ialah fungsi penapisan Saya menggunakan Ajax untuk meminta maklumat daripada pangkalan data dalam PHP dan menggunakan JSON untuk menghantarnya kembali ke JavaScript Walau bagaimanapun, apabila memasukkan kandungan yang berkaitan, beberapa penapis boleh dibaca daripada pangkalan data, manakala yang lain tidak. Saya fikir Tanya bagaimana untuk menyelesaikannya.
kod javascript:
submitElement.addEventListener('click',function(event){
if(searchDescription === 1){
search = filterByTitleElement.value;
}else if(searchDescription === 2){
search = filterByDescriptionElement.value;
}
//将输入的搜索信息传递给php文件,让其再数据库中找到相应的匹配项。
var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
a = eval('(' + xmlhttp.responseText + ')');
tableDisplay.innerHTML = a.length;
}
}
};
xmlhttp.open("GET", "SearchDeal.php?inputMessage=" + search + "&searchdescription=" + searchDescription, true);
xmlhttp.send();
});
function pageForDisplay(number){
var result = "<thead><tr><td>Search Result</td></tr></thead><tr><td><table border=\"1\" id=\"inside\">";
for(var i = 0; i < 5 ;i++){
result = result + " <tr><td><p class=\"photoInside\"><a href=\"DetailsPage.php\"><img src=\"travel-images/square-medium/" + a[number + i]['PATH'] +"\"></a>" +
"<h3><a href=\"DetailsPage.php\">" + a[number + i]['Title'] +"</a></h3>" +
"<p>" + a[number + i]['Description'] + "</p>" +
"</p></td></tr>";
}
result = result + "</table></td></tr>";
return result;
kod php:
$messageForSearch = $_GET["inputMessage"];
$messageForNumber = $_GET["searchdescription"];
$conn = mysqli_connect("localhost","root","","travel");
if($messageForNumber == 1){
$sql = "SELECT ImageID,Title,Description ,PATH FROM travelimage where Title REGEXP '[$messageForSearch]'";
}else if($messageForNumber == 2){
$sql = "SELECT ImageID,Title,Description ,PATH FROM travelimage where Description REGEXP '[$messageForSearch]'";
}
$a = mysqli_query($conn,$sql);
$json = mysqli_fetch_all($a,MYSQLI_ASSOC);
//print_r($json);
echo json_encode($json);
}
Mengikut kod di atas, kadangkala a.length akan berubah, tetapi kadangkala ia tidak akan berubah (biasanya apabila terdapat terlalu banyak hasil yang ditapis). Walau bagaimanapun, jika saya menggantikan baris terakhir kod dalam php dengan print_r($json), akan ada output.
json memerlukan pengekodan utf8, semak sama ada data yang diperolehi daripada pangkalan data semuanya dikodkan utf8.