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: ‘dyb‘,
        password: ‘1743721550‘,
        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>

原文地址:https://www.cnblogs.com/dybe/p/8186242.html

时间: 2024-08-02 22:09:51

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

原生JS取代一些JQuery方法的简单实现

原生JS取代一些JQuery方法的简单实现 下面小编就为大家带来一篇原生JS取代一些JQuery方法的简单实现.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 1.选取元素 // jQuery var els = $('.el'); // Native var els = document.querySelectorAll('.el'); // Shorthand var $ = function (el) { return document.querySelect

原生AJAX+jsp+servlet实现百度搜索框提示效果

我们这里使用HTML5的新特性datalist实现输入框的自动下拉提示,用datalist通过id与input关联起来,在搜索时就会出现下拉框.下面是HTML代码. <!-- 输入框 --> <input type="text" size="50" id="search" name="search" list="browser" onkeyup="search()" o

314 Ajax案例:邮箱地址验证,搜索框输入自动提示,省市区三级联动

Aja案例接口文档 测试地址:http://localhost:3000 请求参数类型:application/x-www-form-urlencoded 邮箱地址验证 简要描述 验证邮箱@itcast.cn地址是否唯一,已注册 [[email protected]符合规则,未注册itheima] 请求地址 /verifyEmailAdress 请求方式 GET 参数 参数名 必选 类型 说明 email 是 string 待验证邮箱地址 返回值 {message: '邮箱地址已经注册过了, 请

jquery+ajax 实现搜索框提示

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> #search_result{ width:302px; position:absolute; left:618px; top:180px; z-index:1; overflow:hidden;

js借助JSONP实现百度搜索框提示效果

主要借助百度搜索的API,调用时会存在跨域问题,需要通过JSONP来解决这个问题,代码如下(代码中部分使用ES6语法): HTML <input type="text" id="input"> <div id="text"></div> js: document.querySelector('#input').oninput = function () { let val = this.value; jsonp

自定义超简单SearchView搜索框

先看效果图 Java代码: import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnKeyListener; import an

java简单的实现搜索框的下拉显示相关搜索功能

最近做了一个简单的搜索框下面下拉显示相关搜索的功能,有点模仿百度的下拉展示相关搜索 先上个展示图 : 点击进入演示地址,大家可以输入长点的搜索,点击搜索,再输入之前搜索词的前面部分,看是否能展示出来 搜索框相关搜索的展示很简单,就是根据你的搜索词,去数据库中匹配,是否有类似的搜索词存在,按照搜索词被搜索的次数进行排序显示出来 我设计的是每次搜索一个词,提交之后都会去数据库进行查询,看是否存在这个搜索词的搜索,若存在,则对数据库中的这个搜索词对象进行次数加1,不存在,则创建这个新搜索词对象,保存在

百度搜索下拉框提示代码 opensug.js

opensug ·简单方式--方便的将"百度搜索框(带提示功能)"直接加入到您的网页中. 将以下代码加入到您的网页中,即可获得带有"搜索框提示"功能的百度搜索框. HTML代码: <form action="http://www.baidu.com/baidu" target="_blank"> <table bgcolor="#FFFFFF"><tr><td>

简单的前端js+ajax 购物车框架(入门篇)

其实,一直想把自己写的一些js给总结下,也许是能力有限不能把它完美结合起来.只能自己默默的看着哪些代码,无能为力. 今天在公司实在没有事做,突然就想到写下商城的购物车的前端框架,当然我这里只有购物车的增删改查,也许写的并不是那么完善,但最重要的是一个入门,也希望js达人给些建议,好让我更上一个台阶. HOHO~~~开始咯: Js: //为了省事,就没写自己的js ajax了 用了jquery的,当然你也可以添加到jquery的扩展方法内,哈哈,我太懒了,所以就写这里了. var _$ = { A