为了账号安全,请及时绑定邮箱和手机立即绑定

json出不来!!!求大神指点

package com.search;

import net.sf.json.JSONArray;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * ${DESCRIPTION}
 *
 * @author shenyahui
 * @create 2018-02-23 16:43
 **/
public class SearchServlet extends HttpServlet {
    static List<String> datas = new ArrayList<String>();
    //模拟数据
    static {

        datas.add("ajax");
        datas.add("ajax post");
        datas.add("becky");
        datas.add("bill");
        datas.add("james");
        datas.add("jerry");
        datas.add("hao");

    }


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //转换格式
         request.setCharacterEncoding("utf-8");
         response.setCharacterEncoding("utf-8");

        System.out.println("123");
        //首先获得客户端发来的数据keyword
        String keyword = request.getParameter("keyword");
        //获得关键字之后进行处理,得到关联数据
        List<String> listData = getDatas(keyword);
        //返回json格式
       //System.out.print(JSONArray.fromObject(listData));
        response.getWriter().write(JSONArray.fromObject(listData).toString());
    }
    //获得关联数据
    public List<String> getDatas(String keyword){

        List<String> list = new ArrayList<String>();
        for (String data:datas) {
            if(data.contains(keyword)){
                list.add(data);
            }
        }
        return  list;
    }
}
<%--
  Created by IntelliJ IDEA.
  User: htcs
  Date: 2018/2/23
  Time: 11:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>搜索框只能查询Demo</title>

      <style type="text/css">
          #mydiv{
              position: absolute;
              left: 50%;
              top: 50%;
              margin-left: -200px;
              margin-top: -50px;
          }

      </style>
<script type="text/javascript">

    //后面要多次使用所以定义为全局变量
    var xmlHttp;
    //获取用户输入内容的管理信息的函数
    function getMoreContents() {
        //首先获取用户的输入
        var content = document.getElementById("keyword");
        if (content.value == "") {
            return;
        }
        //然后要给服务器发送用户输入的内容,因为我们采用的是ajax异步发送数据,
        //所以我们要使用一个对象,叫做XmlHttp对象
        xmlHttp = createXMLHttp();//获得XMLHttp对象;

        //要给服务器发送数据,escape是为了保持中文
        var url = "search?keyword=" + escape(content.value);

        //true表示JavaScript脚本会在send()方法后继续执行,而不会等待来自服务器的响应
        xmlHttp.open("GET",url,true);

        //xmlHttp绑定回调方法,这个回调方法会在xmlHttp状态改变的时候被调用
        //xmlHttp的状态有0-4.我们只关心4即complete交互完成
        xmlHttp.onreadystatechange = callback;
        xmlHttp.send(null);
    }
        //获取XmlHttp对象
        function createXMLHttp() {
            var xmlHttp;
            if (window.XMLHttpRequest) {
                xmlHttp = new XMLHttpRequest();
            }
            if (window.ActiveXObject) {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                if (!xmlHttp) {
                    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
                }
            }
            return xmlHttp;
        }
        //回调函数
        function callback() {
            //4代表完成,200代表响应成功
            if(xmlHttp.readyState==4){
                if (xmlHttp.status==200){
                    //交互成功,获得响应的数据是文本形式
                    var result  = xmlHttp.responseText;
                    //解析获得数据
                    var json = eval("("+result+")");
                    //获取数据后动态显示 展示输入框下面
                    //setContent(json);
                    alert(json);
                }
            }
        }
        //设置关联数据展示,参数代表的是服务器传递过来的关联数据
        function setContent(contents) {
          //首先获取关联数据的长度,以此来确定生成多少<tr></tr>
          var size = contents.length;
          //设置内容
            for(var i=0;i<size;i++){
                var nextNode = contents[i];//代表的是json格式数据的第i个元素
                var tr = document.createElement("tr");
                var td = document.createElement("td");
                td.setAttribute("border","0");
                td.setAttribute("bgcolor","#FFFAFA");
                td.onmouseover=function () {
                    this.className = 'mouseOver';
                };
                td.onmouseout=function () {
                    this.className = 'mouseOut';
                };
                td.onclick=function () {
                    //当鼠标点击一个关联数据时,关联数据自动设置为输入框数据
                };
                //放文本内容,然后层层传递,动态生成数据
                var text = document.createTextNode(nextNode);
                td.appendChild(text);
                tr.appendChild(td);
                document.getElementById("content_table_body").appendChild(tr);
            }
        }
</script>
  </head>
  <body>
<div id="mydiv">
 <%--输入框--%>
  <input type="text" size="50" id="keyword" onkeyup="getMoreContents()"/>
  <%--按钮--%>
  <input type="button" value="百度一下" width="50px"/>
    <%--展示区域--%>
    <div id="popDiv">
        <table id="content_table" bgcolor="#FFFAFA" border="0" cellspacing="0" cellpadding="0">

            <tbody id="content_table_body">
            <%--动态查询出来的数据,显示在此--%>

            </tbody>

        </table>
    </div>
</div>
  </body>
</html>


正在回答

1 回答

xml配置文档呢?


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

json出不来!!!求大神指点

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信