js:ajax的get方法实现简单的搜索框提示

时间:2021-07-12 05:59:14

效果演示:

js:ajax的get方法实现简单的搜索框提示

一,使用nodejs搭建后台环境,通过ajax的get方法将文本框中的值,实时传输到后台进行比较,后台返回相应的结果,将结果返回到ul中

1,创建路由

app4.js

/**
* Created by dyb on 2018/1/2.
*/
var express = require('express');
var fs= require('fs');
var url = require('url');
var app = express();
var mysql = require('mysql');
/*app.engine('.html', require('ejs').__express);*/
app.set(
'view engine', 'ejs');
app.set(
'views', __dirname + '/views');
app.use(express.static( __dirname
+"/public"));
var router=express.Router();
//直接访问模板的路由
app.get(
'/ee/*', function(req, res,next){
var pagePath= url.parse(req.url).pathname;
if(pagePath.indexOf(".ejs")!=-1){
pagePath
=pagePath.substr(1);
pagePath
=pagePath.substr(0,pagePath.length-4);
res.render(pagePath);
}
else {
next();
}
});

//使用的路由
var scfk=require('./action/scfk.js');
app.use(
"/",new scfk(express).router);

app.listen(
3001,function afterListen(){
console.log(
"express running ....");
});

2,搭建处理数据的模块

scfk.js

/**
* Created by dyb on 2018/1/2.
*/
var Db=require('./db.js');
//创建一个新的数据库方法对象
var db=new Db();
function scfk(express) {
//创建路由
this.router = express.Router();

var cSql = "select * from scfk";
//通过对象调用函数创建连接
/*<% args.forEach(function(row){
var aa=row.substring(0,test.length);
if(aa.equals(test)){%>
<li><%=row%></li>
<% }
})%>
*/
//调用函数接收数据
this.router.get("/action/scfk.js?",function(req,res) {
//获取数据库中的数据
db.excuteQuery(cSql, function (data) {
//req.query:获取URL的查询参数串
var par=req.query;
if(par.ss){
var sk="";
//遍历数据库中的数据与url参数串比较
data.data.forEach(function(row){
console.log(row.sc_vl);
//将数据库中的数据进行截取
var aa=row.sc_vl.substring(0,par.ss.length);
console.log(aa
+" "+par.ss);
//比较传来的参数和数据库中截取到的数据是否一至
if(par.ss==aa){
console.log(row);
sk
+=row.sc_vl+",";
}
});
//向页面发送数据
res.send({"args": sk});
}
})
})
}

module.exports
=scfk;

3,搭建访问数据库的模块

db.js

/**
* 创建数据库连接,并获取数据
*/
var mysql = require('mysql');
(
function Db(){
var pool = mysql.createPool({
host:
'localhost',
user:
'db',
password:
'17437215',
database:
'test',
port:
3306,
acquireTimeout:
10000,
connectionLimit:
10
});
Db.prototype.excuteQuery
=function(sql,callback){
pool.getConnection(
function(err,con){
if(err){
throw "数据连接异常:"+err;
}
else{
con.query(sql,
function(err,rows){
//释放连接
con.release();
var result="";
if (err){
result
= {
"status": "500",
"message": "数据库查询语句异常"
}
}
else{
result
= {
"status": "200",
"message": "success",
"data":rows
}
}
callback(result);
});
}
});
}
module.exports
=Db;
}());

5,ejs视图

ajSsk.ejs

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/html">
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<script src="../js/jquery.min.js"></script>
<script type="text/javascript">
function aa(){
//获得匹配元素的当前值
var test=$("#ee").val();
console.log(test);
var text="";
//使用get方法发送元素中的值,并使用回调函数接收并处理
$.get("../action/scfk.js",{ss:test},function(data){
console.log(data.args);
//分割字符串
var qq=data.args.split(",");
console.log(qq);
//循环接收到的参数赋到text中
for(var i=0;i<qq.length;i++){
text
+="<li style=''>"+qq[i]+"</li>";
}
/* $.each(qq,function(row){
text+="<li>"+row+"</li>";
});
*/
//html将text添加到id为ss的节点中
$("#ss").html(text);
})
}
</script>
<body>

<input type="text" oninput="aa()" id="ee"><input type="button" value="搜索">
<ul style="margin: 0px 0px;list-style:none; width: 171px;border: 1px solid;padding: 0px" id="ss">

</ul>
</body>
</html>