热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ASP.NET利用AJAX实现搜索提示(上)

      我平时的软件开发中,信息的搜索是经常碰到的,增加搜索关键字提示是提高用户体验的一种很好的办法。今天就介绍

       我平时的软件开发中,信息的搜索是经常碰到的,增加搜索关键字提示是提高用户体验的一种很好的办法。今天就介绍下在ASP.NET如何利用AJAX来实现搜索的信息提示!

 

       1.需要了解的一些知识点

           (1)AJAX对象不同浏览器的创建

                   不同的浏览器对AJAX(XMLHttpRequest)对象的实现是不一样的,例如IE浏览器是通过ActiveX控件来实现AJAX对象。而其他一些浏览器比如火狐,它将AJAX对象实现成了一个浏览器内部的对象叫XMLHttpRequest,所以不同的浏览器创建AJAX对象的方式也就不同,那么我们来看看不同浏览器之间创建AJAX对象的方式:

                   在IE浏览器下面的创建:

        //IE浏览器
        try {
            
//IE5.0

            httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } 
catch
 (e) {
            
try
 {
                
//IE5.5 以上版本

                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
        } 
catch (e) { }

   

                   在火狐浏览器下面的创建:

        //火狐, Safari 等浏览器
        httpRequest = new XMLHttpRequest();

 

                   多浏览器AJAX对象创建函数: 

function createAjaxObj() {
    
var httpRequest = false
;

    
//判断是否包含XMLHttpRequest对象 PS:将来IE高也有可能继承次对象

    if (window.XMLHttpRequest) {
        
//火狐 , Safari 等浏览器

        httpRequest = new XMLHttpRequest();
        
if
 (httpRequest.overrideMimeType)
            httpRequest.overrideMimeType(
'text/xml'
);

    }//判断是否支持Active控件对象
    else if (window.ActiveXObject) {
        
//IE浏览器

        try {
            
//IE5.0

            httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } 
catch
 (e) {
            
try
 {
                
//IE5.5以上

                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
        } 
catch
 (e) { }
        }
    }
    
//返回创建好的AJAX对象

    return httpRequest;
}

 

          (2)文本框内容改变的事件在不同浏览器下的使用

                  文本框内容改变的事件目前来说还没有一个标准的版本。我们目前只关心IE与火狐好了,那么在IE和火狐下这两个时间分别怎么表示呢?

                  IE: onpropertychange

           FireFox: oninput

                 那么如何在页面加载时,根据浏览器给文本框附加对应的change事件呢?

                 1.JS如何判断浏览器版本                    

//IE浏览器
if (navigator.userAgent.indexOf("MSIE"> 0)
{ }

//火狐浏览器
if (isFirefox = navigator.userAgent.indexOf("Firefox"> 0)
{}

 

                 2.根据浏览器版本给文本框附加对应事件 

function getOs() {
    
//判断浏览器类型 
       if (navigator.userAgent.indexOf("MSIE"> 0) {
        
//此时假设文本框id为'txtSearch'
        //为文本框附加IE所支持的事件
        document.getElementById('txtSearch').attachEvent("onpropertychange", search);
        OsTyep 
= "MSIE";
    } 
else if (navigator.userAgent.indexOf("Firefox"> 0) {
        
//此时假设文本框id为'txtSearch'
        //为文本框附加火狐所支持的事件
        document.getElementById('txtSearch').addEventListener("input", search, false);
        OsTyep 
= "Firefox";
    }
}

                3.根据浏览器版本给文本框清除对应事件

function ClearOS() {
    
if (navigator.userAgent.indexOf("MSIE"> 0) {
        //此时假设文本框id为'txtSearch'
        //为文本框清除IE所支持的事件
        document.getElementById(
'txtSearch').detachEvent("onpropertychange", search);
        OsTyep 
= "MSIE";
    } 
else if (navigator.userAgent.indexOf("Firefox"> 0) {
        //此时假设文本框id为'txtSearch'
        //为文本框清除火狐所支持的事件
        document.getElementById(
'txtSearch').removeEventListener("input", search, false);
        OsTyep 
= "Firefox";
    }
}

 

       2.客户端的设计

           (1)实现流程的分析

                   了解完以上知识点之后,我们来看一下实现搜索提示的一个整体流程:

                   (1) 首先客户端通过文本框输入事件捕获输入的关键字

                   (2)  在通过我们之前创建好的AJAX对象提交给服务器

                   (3) 服务器接受提交的关键字,进行查询将结果集返回给客户端进行显示

                    流程如下:ASP.NET 利用AJAX实现搜索提示(上)

           (2)样式的编写

                   那么接下来我们来看一下样式,其中包括当文本框鼠标移动上去给边框加颜色与搜索结果行选中的样式等,这里就不细说了,列举出来供参考:

 

推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了10分钟了解Android的事件分发相关的知识,希望对你有一定的参考价值。什么是事件分发?大家 ... [详细]
author-avatar
mobiledu2502926247
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有