【发布时间】:2018-10-22 18:01:51
【问题描述】:
我是 AJAX 新手,偶然发现了一个小问题。我的数据库中的页面有一个自定义搜索字段:
PHP:
if(isset($_GET['fdf_search'])){
$term_search = $_GET['fdf_search'];
$fdf_pages = $mysqli_con->select("SELECT * FROM `pages` WHERE `alias` LIKE '%".$term_search."%'");
}
AJAX:
$(document).ready(function() {
$("#fdf-search").keyup(function() {
// Assign $_GET['fdf-search'] to variable "searchKey" in js
var searchKey = $('#fdf-search').val();
if (searchKey == "") {
//nothing
}else{
console.log('ajax called');
$.ajax({
type: "GET",
url: "/fluidify/fdf-admin/functions/fdf_system_search.php",
data: {
search:searchKey
},
success: function(html){
window.history.replaceState(null, null, "?fdf_search=" + searchKey + "");
}
});
}
});
});
HTML:
<form action="" method="get">
<input id="fdf-search" class="fdf-search" type="text" placeholder="zoeken" name="fdf_search" value="">
<input class="fdf-search" type="submit" value="Zoeken" name="fdf_submit_search">
</form>
当我输入任何单词时,我希望我的 AJAX 触发 PHP 查询并查找并返回任何结果。现在window.history.replaceState(null, null, "?fdf_search=" + searchKey + ""); 正在更改我网址中的GET,但由于某种原因它什么也没做。
感谢所有帮助:)
编辑:选择();类
public function select($query,$report = NULL){
$result_array = array();
$result_empty = false;
$result = $this -> query($query);
if($result !== false){
while($row = $result -> fetch_assoc()){
$result_array[] = $row;
}
return($result -> num_rows === 0) ? false : $result_array;
}else{
if($report === true){
echo "error in query:";
print_r($result);
print_r($result_array);
print_r($query);
echo "<br>";
}
}
}
【问题讨论】:
-
“正在更改我的 URL 中的 GET,但由于某种原因它什么也没做” - 这是两个相互排斥的事情。 这行代码所做的一切 就是修改 URL 值。如果它成功地做到这一点,那么它的工作。您还希望您的代码执行其他操作吗?
-
好吧,我想从 PHP 查询中获得新的结果。我的
GET变量正在使用我提供的代码进行更新,但由于某种原因,我没有从我的 PHP 查询中获得更新的结果。 -
看起来你的 php 代码没有回显任何东西,加上你的 ajax 的成功函数没有使用响应(html),你需要从 php 中回显一些东西并在你的成功函数中使用它.
-
在您的 AJAX
success函数中,您没有对html变量做任何事情。这将包含服务器返回的任何内容。 -
你应该给 POST 类型:“GET”,ajax 调用。因为你在传递数据就像在正文中一样
标签: php jquery ajax forms search