この記事では主に、スマート検索ボックスのスマート プロンプト機能を実装するための Servlet+Ajax を紹介します。Ajax に興味がある友人は、スマート検索ボックスのスマート プロンプト機能を実装するための Servlet+Ajax を参照してください。
リフレッシュレス テクノロジーを使用して検索ボックスをインテリジェントに変更します。 Baidu 検索と同じです
レンダリング
基本原則:
1. 検索ボックスの onkeyup (キーボード入力時)、onfocus (マウスが外側をクリックしたときにプロンプトをクリアする) を記述します。検索ボックス)
2. まずユーザー入力を取得し、取得したデータをサーバーに渡します。バックグラウンドは、処理のためにサーバーからデータを取得し、関連するデータを取得して、json を返します。フロントエンドはコールバック関数を渡し、返されたjsonをテキストに解析し、検索ボックスの下の表示ウィンドウにテキストを転送します
以下はjson
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>ajax搜索</title> <script type="text/javascript"> //获得更多关联信息的函数 function getMore(){ var xmlHttp; //首先获得用户的输入 var content = document.getElementById("keyword"); if(content.value==""){ keywordBlur();//执行一下清空方法,使搜索框在无数据的时候,下方残留数据也动态清空 return; } //alert(content.value); //要给服务器发送用户输入的内容,要创建对象,叫XmlHttp对象 //xmlHttp=获得XmlHttp对象 xmlHttp=CreatXMLHttp(); //alert(xmlHttp); //要给服务器发送数据 var url="serch?keyword="+escape(content.value); //如果不用escape这个函数转化一下的话,传中文会有问题 //true表示javascript的脚本会在send()方法之后继续执行,而不会等待来自服务器的相应 xmlHttp.open("GET",url,true); //xmlHttp绑定一个回调方法去接受服务器传来的相应,会在xmlHttp状态改变的时候被调用 //xmlHttp有0~4的状态,只关心4的方法 //4为complete状态,表示交互完成,当交互完成时才会调用回调方法 xmlHttp.onreadystatechange=callback; xmlHttp.send(null);//send里面发送的是内容体,但参数在URL里已经都写完了 //回调函数==!!注意 这里回调方法要在方法内创建,因为创建的xmlHttp对象不是全局变量 //是在getMore()方法里创建的,可以将变量提取出来,变成全局变量 function callback(){ if (xmlHttp.readyState==4){ //200代表服务器相应成功。。。404代表资源未找到。。500服务器内部错误 if(xmlHttp.status==200){ //交互成功,获得相应的数据,是文本格式 var result=xmlHttp.responseText; //解析json格式 var json=eval("("+result+")");//要在两边加个小括号,js才能认识 //获得数据之后就可以开始展示了。在输入框的下边展示 setContent(json); } } } //设置关联数据展示,参数代表的是服务器传递过来的关联数据 function setContent(contents){ //setLocation();//设置跟输入框一样宽度 keywordBlur();//在每次得到值之前先清空一下之前的残留数据 var size=contents.length;//根据关联的数据长度,来生成多少<tr> //设置内容 for(var i=0;i<size;i++){ //不用appendChild()方法是因为不同浏览器可能不兼容该方法 var nextNode=contents[i];//代表json格式的第i个元素 var newRow=content_table_body.insertRow();//创建行 var newCell=newRow.insertCell();//创建单元格 newCell.innerHTML=contents[i];//将数据赋值给单元格 } } } //获得XmlHttp对象 function CreatXMLHttp(){ //要考虑不同浏览器的写法 //大多数浏览器使用 var xmlHttpReq; if(window.XMLHttpRequest){//火狐 xmlHttpReq=new XMLHttpRequest(); }else{ /* if(window.ActiveXObject){ xmlHttpReq=neww ActiveXObject("Microsoft.XMLHTTP"); //例如ie有很多版本,不一定能创建出来这个对象,所以要添加以下一个判断 //换一种方法,保证创建 if(!xmlHttp){ xmlHttpReq=new ActiveObject("Msxml2.XMLHTTP"); } } */ //一定要如下格式写 上述格式火狐IE亲测不好使 try { //IE xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { try {//IE 浏览器 xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { } } } return xmlHttpReq; } //失去焦点的时候 function keywordBlur(){ //要获得body的元素长度,才能知道要遍历多少次 var contentTableBody=document.getElementById("content_table_body"); var size=contentTableBody.childNodes.length; //因为是删除子节点,所以是从后往前才能删,同二叉树,删除子节点 for(var i=size-1;i>=0;i--){ contentTableBody.removeChild(contentTableBody.childNodes[i]); } document.getElementById("popp").style.border="none"; } </script> <style type="text/css"> /* #myp{ position: absolute; left:30%; top:50%; margin-left: 100px; } */ .mouseOver{ background: #708090; color: #FFFAFA; } .mouseOut{ background: #FFFAFA; color: #000000; } </style> </head> <body> <p id="myp"> <!-- 输入框 --> <input type="text" id="keyword" size="50" onblur="keywordBlur()" onkeyup="getMore()" onfocus="getMore()"/> <input type="button" value="百度一下" wise="50px"> <!-- 下面是内容展示的区域 --> <p id="popp"> <table id="contentTable" bgcolor="#FFFAFA" border="0" cellpadding="0" cellspacing="0"> <tbody id="content_table_body"> <!-- 这个是动态查询出来的数据显示的地方 --> <!-- <tr><td>ajax1</td></tr> <tr><td>ajax2</td></tr> <tr><td>ajax3</td></tr> --> </tbody> </table> </p> </p> </body> </html>
package com.ninka; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray; public class SearchServlet extends HttpServlet{ static List<String> datas = new ArrayList<String>(); static{ datas.add("ajax1"); datas.add("ajax2"); datas.add("ajax3"); datas.add("bichi1"); datas.add("bichi2"); datas.add("php"); datas.add("javascript"); datas.add("java"); datas.add("html"); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置下编码格式 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); System.out.println("123"); //首先获得客户端传来的数据,,注意传过来的参数关键字一定要写对,否则会空指针异常 String keyword = request.getParameter("keyword"); //获得关键字之后进行处理,得到关联数据 List<String> listData = getData(keyword); //返回json格式 System.out.println(JSONArray.fromObject(listData)); //JSONArray.fromObject(listData); response.getWriter().write(JSONArray.fromObject(listData).toString()); } //获得关联数据方法 public List<String> getData(String keyword){ List<String> list = new ArrayList<String>(); for(String data:datas){ //如果传递过来的数据,属于词库里面的话,那么就把包含关键词的数据打包成list,向客户端传 if(data.contains(keyword)){ list.add(data); } } return list; } }
ファイルアップロード機能を実装するためのAjaxとnode.js multerの詳細な説明
読み込み待機効果の実装方法についてAjax がデータを返す前に
以上がServlet+Ajax はスマート検索ボックスのスマート プロンプト機能を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1
使いやすく無料のコードエディター

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ホットトピック









