猿问

求帮忙,这程序我实在找不出问题在哪

简单的搜索框下拉读取数据 可是ajax那接收不到数据 

源代码如下:

前端: search.php

<!DOCTYPE html>

<head>

<meta charset="utf-8" />

<link rel="stylesheet" href="css/example.css" />

<link rel="stylesheet" href="css/weui.css" />

<link rel="stylesheet" href="css/weui.min.css" />

</head>

<body>

<div class="weui_search_bar">

<div class="weui_search_inner">

<form  action="" method="get">

<i class="weui_icon_search"></i>

<input type="search" class="weui_search_input" name="keyword" id="keyword" placeholder="搜索" required />


<div id="searchbox" style="display: none;"></div>

<div style="clear: both;">

</form>

</div>

</div>

</body>

<script type="text/javascript" src="js/jquery-2.1.4.js" ></script>

<script>$(document).ready(function() {

var xhr = null;

$('input[name="keyword"]').keyup(function() {

if(xhr) {

xhr.abort(); //如果存在ajax的请求,就放弃请求

}

var inputText = $.trim(this.value);

if(inputText != "") { //检测键盘输入的内容是否为空,为空就不发出请求

xhr = $.ajax({

type: 'GET',

url: 'searchhoutai.php',

cache: false, //不从浏览器缓存中加载请求信息

data: {

"keyword": inputText

}, //向服务器端发送的数据

dataType: 'json', //服务器返回数据的类型为json

success: function(json) {

if(json.length != 0) { //检测返回的结果是否为空

var lists = "<ul>";

$.each(json, function(i) {

lists += "<li>" + json[i]['Id'] + "</li>"; //遍历出每一条返回的数据

});

lists += "</ul>";


$("#searchbox").html(lists).show(); //将搜索到的结果展示出来


$("li").click(function() {

$("#keyword").val($(this).text()); //点击某个li就会获取当前的值

$("#searchbox").hide();

})


} else {

$("#searchbox").hide();

}


}


});

} else {

$("#searchbox").hide(); //没有查询结果就隐藏搜索框

}

}).blur(function() {

$("#searchbox").hide(); //输入框失去焦点的时候就隐藏搜索框

});


});</script>

</html>

后端 searchhoutai.php

<?php

session_start();

error_reporting(0);

function connectDB() {

$db_server = "localhost";

$db_name = "test";

$db_user = "root";

$db_pwd = "root";

$dsn = "mysql:host=$db_server;dbname=$db_name;";

try {

$connect = new PDO($dsn, $db_user, $db_pwd, array(PDO::ATTR_PERSISTENT => true));

//如果需要数据库长连接,需要最后加一个参数


} catch(PDOException $e) {

exit('数据库连接失败');

}

return $connect;


}



function test($keyword){//从数据库中查找关键字的函数  

$db=connectDB();  

/*$result=$db->prepare("select * from love where intro like '%?%'");  

$result->bindParam(1,$keyword);//第一个问号的值  

$result->execute(); */

$result=$db->query("select * from love where intro like '%{$keyword}%'");

}  

  

$keyword=$_GET['keyword'];//获取输入框的内容  


$suggestion=test($keyword);

  

echo json_encode($suggestion);//输出查询的结果(json格式输出)  

  


?>

 

高冷男4335558
浏览 1590回答 1
1回答

iters

php 代码中test方法没有返回值function test($keyword){//从数据库中查找关键字的函数       $db=connectDB();       /*$result=$db->prepare("select * from love where intro like '%?%'");       $result->bindParam(1,$keyword);//第一个问号的值       $result->execute(); */     $result=$db->query("select * from love where intro like '%{$keyword}%'");          // 1. 对result需要调用方法拿到数组吧?!     // 2. 此处应该有返回值吧     // 3. 建议先调试前端,后端直接echo json_encode([一些模拟的数据]),确保前端代码没问题,再调后端 }
随时随地看视频慕课网APP
我要回答