此处将为大家介绍关于jsTreeAJAX搜索一些节点的孩子?的详细内容,并且为您解答有关ajax实现搜索功能的相关问题,此外,我们还将为您介绍关于2019-08-02原生ajax搜索、ajax搜索提示
此处将为大家介绍关于jsTree AJAX搜索一些节点的孩子?的详细内容,并且为您解答有关ajax实现搜索功能的相关问题,此外,我们还将为您介绍关于2019-08-02 原生ajax搜索、ajax搜索提示框、Ajax搜索自动提示、c# – 如何让所有的父母控制的孩子?的有用信息。
本文目录一览:jsTree AJAX搜索一些节点的孩子?(ajax实现搜索功能)
我阅读了文档,并找到了一些信息:
$.jstree.defaults.search.ajax
A str (which is the search string) parameter will be added with the request,an optional inside parameter will be added if the search is limited to a node id.
我的搜索AJAX配置:
"search": { // search config "show_only_matches": true,'ajax': { 'url': "/ajax/root-nodes" } },
jsSearch电话:
$tree.jstree(true).search(searchText);
我也使用延迟加载子节点.
有人做过这样的事吗?
解决方法
http://www.jstree.com/api/#/?q=search%28&f=search%28str%20[,%20skip_async]%29
例如,如果您的根节点ID是“root1”,请使用以下命令:
$tree.jstree(true).search(searchText,false,true,’root1′);
调用搜索功能后,将根据您的配置发出AJAX请求.因此,在您的情况下,如果用户搜索“foo” – 它将是一个带有两个参数的GET请求 – str和inside:
GET / ajax / root-nodes?str = foo& inside = root1
您的响应应该是一个JSON数组,包含需要加载(和打开)的所有唯一父ID.您可能希望通过执行服务器端搜索来构建此数组,收集每个匹配的父项,然后将它们组合在一个数组中(并且只保留唯一条目):[中 “root1”,“somenode”]
2019-08-02 原生ajax搜索
<html> <Meta charset="utf-8"/> <head><title>搜索页</title></head> <body> <input type="text" id="user_data"/><button onclick="search()">百度一下</button> <div id="list"></div> </body> </html> <script type="text/javascript"> function search(){ //alert(1); var user_data = document.getElementById(‘user_data‘).value;//接收到文本框的值 if (user_data=="") { document.getElementById(‘list‘).innerHTML="不可为空"; }else{ //alert(user_data); var xhr = new XMLHttpRequest();//引入原生ajax //console.log(xhr); xhr.open("post","sou.PHP",true); xhr.setRequestHeader(‘Content-type‘,‘application/x-www-form-urlencoded‘); xhr.onreadystatechange = function(){ //console.log(xhr.readyState);//打印监听状态 //console.log(xhr.responseText);//值 var cd = xhr.responseText; var e = JSON.parse(cd); var str = "<table><th>id</th><th>name</th><th>email</th>"; for(var i =0 in e){ str+="<tr><td>"+e[i].id+"</td><td>"+e[i].name+"</td><td>"+e[i].email+"</td></tr>"; } str+="</table>"; document.getElementById("list").innerHTML=str; } xhr.send("data="+user_data); } } </script>
PHP代码:
<?PHP $data = $_POST[‘data‘]; $dsn = "MysqL:host=127.0.0.1;port=3306;charset=utf8;dbname=news"; $pdo = new PDO($dsn,"root","root"); $sql = "select * from news where name like ‘%$data%‘"; $res = $pdo->query($sql); $row = $res->fetchALL(PDO::FETCH_ASSOC); echo json_encode($row); ?>
使用get请求的总结
ajax搜索提示框
jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <style> .mouSEOver{ background: #708090; color:#FFFAFA; } .mouSEOut{ background: FFFAFA; color#000000; } </style> <script type="text/javascript"> //创建XMLHttp function getMoreContens() { var xmlHttp; var content = document.getElementById("keyword").value; if (content == ""){ alert('为空'); clearContent(); return ; } //输入框由内容 , 创建XML对象 xmlHttp = createXmlHttp(); //alert(conten+xmlHttp); //发送到服务器 var url = "servlet?keyword="+content; //以get方式将参数带到servlet中 xmlHttp.open("GET",url,true); xmlHttp.send(null); xmlHttp.onreadystatechange = function callback() { if(xmlHttp.readyState == 4 && xmlHttp.status == 200) //响应完成 且成功 { //获取文本信息 var result = xmlHttp.responseText; //由服务器返回的信息 //解析获得的数据 var json = eval("("+result+")"); //进行解析 //获取到 了 后台的数据alert(json); setContent(json) } }; //设置显示的数据 function setContent(contents){ clearContent(); var size = contents.length; //获取到数据的长度 for (var i=0; i<size; i++){ var nextNode = contents[i]; var tr = document.createElement("tr"); var td = document.createElement("td"); tr.setAttribute("border",0); tr.setAttribute("bgcolor","#FFFAFA"); td.setAttribute("width","200px"); //鼠标对td的事件 td.onmouSEOver=function(){ this.className = 'mouSEOver'; }; td.onmouSEOut=function(){ this.className = 'mouSEOut'; }; td.onclick=function(){ //当鼠标点击数据自动显示在输入框 }; var text = document.createTextNode(nextNode); td.appendChild(text); //文本放进td tr.appendChild(td); //td放进tr document.getElementById("content_table_body").appendChild(tr); } }; } //清空之气那的数据 function clearContent(){ //得到tablebody 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]); } }; //输入框失去焦点 function keywordBlur(){ clearContent(); } //创建XML对象 function createXmlHttp() { var xmlHttp; if(window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } //兼容IE else if(window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); if(!xmlHttp) { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } } return xmlHttp; } </script> </head> <body> <div> <input type="text" name="keyword" id="keyword" onkeyup="getMoreContens()" onblur="keywordBlur()" onfocus="getMoreContens()"> <button>百度一下</button> <div id="popDiv""> <table id="content_table" bgcolor="#FFFAFA" border="0" cellspacing="0"> <tbody id="content_table_body"> <!-- 显示内容区域 --> </tbody> </table> </div> </div> </body> </html>
select
package ajax; import java.io.IOException; import java.io.PrintWriter; 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 Servlet extends HttpServlet { static List<String> datas = new ArrayList<String>(); static{ datas.add("app"); datas.add("add"); datas.add("boy"); datas.add("book"); datas.add("cat"); datas.add("ccc"); } public void doGet(HttpServletRequest request,HttpServletResponse response) throws servletexception,IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //获取客户端发送过来的数据 String keyword = request.getParameter("keyword"); System.out.println("keyword="+keyword); //得到关联数据 List<String> listData = getData(keyword); //返回json格式 JSONArray.fromObject(listData); System.out.println("json"+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){ if (data.contains(keyword)){ list.add(data); } } return list; } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>ajax</display-name> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>Servlet</servlet-name> <servlet-class>ajax.Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Servlet</servlet-name> <url-pattern>/servlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
Ajax搜索自动提示
代码:
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>AJAX实现搜索提示</title> <Meta http-equiv="pragma" content="no-cache"> <Meta http-equiv="cache-control" content="no-cache"> <Meta http-equiv="expires" content="0"> <Meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="CSS/styles.css"> <script language="javascript"> function getXMLHTTPRequest() { var xRequest = null; if (window.XMLHttpRequest) { xRequest = new XMLHttpRequest(); } else if (window.ActiveXObject) { xRequest = new ActiveXObject("Microsoft.XMLHTTP"); } return xRequest; } var xmlhttp; // 启动AJAX请求 function searchSuggest() { xmlhttp = getXMLHTTPRequest(); //判断XMLHttpRequest对象是否成功创建 if (!xmlhttp) { alert("不能创建XMLHttpRequest对象实例"); return false; } //创建请求结果处理程序 xmlhttp.onreadystatechange = processReuqest; var str = document.getElementById("txtSearch").value; xmlhttp.open("GET","SuggestServlet?key=" + str,true); xmlhttp.send(null); } // 事件处理函数 function processReuqest() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var sobj = document.getElementById("suggest"); sobj.innerHTML = ""; var str = xmlhttp.responseText.split(","); var suggest = ""; if (str.length > 0 && str[0].length > 0) { for (i = 0; i < str.length; i++) { suggest += "<div onmouSEOver='javascript:suggestOver(this);'"; suggest += " onmouSEOut='javascript:suggestOut(this);'"; suggest += " onclick='javascript:setSearch(this.innerHTML);'"; suggest += ">" + str[i] + "</div>"; } sobj.innerHTML = suggest; document.getElementById("suggest").style.display = "block"; } else { document.getElementById("suggest").style.display = "none"; } } } // Mouse over函数 function suggestOver(obj) { obj.className = "suggest_link_over"; } //Mouse out函数 function suggestOut(obj) { obj.className = "suggest_link"; } //Click函数 function setSearch(value) { document.getElementById("txtSearch").value = value; document.getElementById("suggest").innerHTML = ""; document.getElementById("suggest").style.display = "none"; } </script> </head> <body> <h3>AJAX实现搜索提示</h3> <div> <form action="" id="formSearch"> <input type="text" id="txtSearch" name="txtSearch" onkeyup="searchSuggest()" autocomplete="off" /> <input type="submit" id="cmdsearch" name="cmdsearch" value="搜索" /> <br /> <div id="suggest"></div> </form> </div> </body> </html>
styles.css
@CHARSET "UTF-8"; body { font: 11px arial; } .suggest_link { background-color: #FFFFFF; padding: 2px 6px 2px 6px; } .suggest_link_over { background-color: #E8F2FE; padding: 2px 6px 2px 6px; } #suggest { position: abslute; background-color: #FFFFFF; text-align: left; border: 1px solid #000000; display: none; }
SuggestServlet.java
package com.set; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import javax.servlet.servletexception; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SuggestServlet extends HttpServlet { private static final long serialVersionUID = 1L; private List<String> db = new ArrayList<String>(); public SuggestServlet() { super(); // 添加搜索提示字符串 db.add("eclipse"); db.add("myeclipse"); db.add("myself"); db.add("java"); db.add("java EE"); db.add("java framework"); db.add("java SE"); } public void init() throws servletexception { } protected void doGet(HttpServletRequest request,HttpServletResponse response) throws servletexception,IOException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); // 获取搜索关键字 String key = request.getParameter("key"); // 模仿从数据库检索数据,rs为以key起头的搜索提示集合 String rs = ""; if (!key.equals("")) { for (int i = 0; i < db.size(); i++) { if (db.get(i).startsWith(key)) { rs = rs + db.get(i) + ","; } } if (!rs.equals("")) { // 去除末尾的"," rs = rs.substring(0,rs.length() - 1); } PrintWriter out = response.getWriter(); out.write(rs); out.flush(); out.close(); } } protected void doPost(HttpServletRequest request,IOException { doGet(request,response); } }
截图;
c# – 如何让所有的父母控制的孩子?
我不知道该怎么做
foreach (Control control in Controls) { if (control.HasChildren) { ?? } }
解决方法
... var children = control.Controls.OfType<Control>(); ...
如果想要层次结构中的所有控件(即树中的所有内容都在某种控制下),请使用:
private IEnumerable<Control> GetControlHierarchy(Control root) { var queue = new Queue<Control>(); queue.Enqueue(root); do { var control = queue.Dequeue(); yield return control; foreach (var child in control.Controls.OfType<Control>()) queue.Enqueue(child); } while (queue.Count > 0); }
然后,您可以使用以下形式的形式:
private void button1_Click(object sender,EventArgs e) { /// get all of the controls in the form's hierarchy in a List<> var controlList = GetControlHierarchy(this).ToList(); foreach (var control in controlList) { /// do something with this control } }
编辑
我修改了GetControlHierarchy()方法来使用一个队列而不是一个堆栈,这可能更有效率,并且为了清楚起见,替换为与控件.Controls.OfType<>()一样.
更新
在控制层次结构中,你永远不会卷起一个循环,但在技术上是可能的.如果发生这种情况,a)有人正在做错,并且b)添加一个跟踪控件散列的哈希表,并修改GetControlHierarchy()方法来抛出一个异常或根本不产生任何已被处理的控件. (这是采访中出现的一些事情,由于某些原因)
关于jsTree AJAX搜索一些节点的孩子?和ajax实现搜索功能的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于2019-08-02 原生ajax搜索、ajax搜索提示框、Ajax搜索自动提示、c# – 如何让所有的父母控制的孩子?等相关内容,可以在本站寻找。
本文标签: