GVKun编程网logo

jsTree AJAX搜索一些节点的孩子?(ajax实现搜索功能)

6

此处将为大家介绍关于jsTreeAJAX搜索一些节点的孩子?的详细内容,并且为您解答有关ajax实现搜索功能的相关问题,此外,我们还将为您介绍关于2019-08-02原生ajax搜索、ajax搜索提示

此处将为大家介绍关于jsTree AJAX搜索一些节点的孩子?的详细内容,并且为您解答有关ajax实现搜索功能的相关问题,此外,我们还将为您介绍关于2019-08-02 原生ajax搜索、ajax搜索提示框、Ajax搜索自动提示、c# – 如何让所有的父母控制的孩子?的有用信息。

本文目录一览:

jsTree AJAX搜索一些节点的孩子?(ajax实现搜索功能)

jsTree AJAX搜索一些节点的孩子?(ajax实现搜索功能)

我尝试在jsTree中实现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搜索

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请求的总结 

1、创建ajax对象
2、给ajax状态的改变绑定监听的事件处理程序
3、建立一个http请求
4、发送一个http请求
 
在使用post方法时一定要设置请求头
xhr.setRequestHeader(‘Content-type‘,‘application/x-www-form-urlencoded‘);
 
 

分享图片

ajax搜索提示框

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搜索自动提示

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# – 如何让所有的父母控制的孩子?

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# – 如何让所有的父母控制的孩子?等相关内容,可以在本站寻找。

本文标签: