在AJAX中处理servlet输出

san*_*dge 7 ajax jsp servlets arraylist

我的问题:我正在从JSP中的AJAX函数向servlet发送请求.

servlet处理数据并返回一个ArrayList.

我的问题是如何处理ArrayList内部AJAX,并将其作为一个表显示在同一个JSP中.

代码是

function ajaxFunction ( ) {

 // var url= codeid.options[codeid.selectedIndex].text;
 url="mstParts?caseNo=9&cdid=QCYST0020E1";
 //  alert(cid);
   var httpRequest;
    if (window.XMLHttpRequest) {
        httpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
  if (httpRequest == null){ alert('null');}

alert(url);
    httpRequest.open("GET", url, true );

   httpRequest.onreadystatechange = function() { alertContents(httpRequest); };
  //httpRequest.setRequestHeader('Content-Type', 'text/plain');
    httpRequest.send(null);

  alert('t1');
}

function alertContents(httpRequest) {
    if (httpRequest.readyState == 4) {
        var cType =httpRequest.getResponseHeader("Content-Type");
        //document.write(httpRequest.toString());
      // alert(cType);
       // var xmlDoc=httpRequest.responseText;
        //document.write(xmlDoc.toString());
      //  if (xmlDoc == null) {alert('null returned');}
        if (!httpRequest.status == 200) {
            alert('Request error. Http code: ' + httpRequest.status);
        }
        else
            {
                var profileXML = eval(<%=request.getAttribute("data")%>);
                if ( profileXML != null){ alert('null'); }//else { alert(profileXML(0)); }
               // httpRequest.getAttribute("data");


            }
    }
}
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 19

var profileXML = eval(<%=request.getAttribute("data")%>);
Run Code Online (Sandbox Code Playgroud)

首先,我建议您了解JavaScript和JSP之间的隔阂.JS完全在客户端运行,JSP/Java完全在服务器端运行.它们肯定不像你想象的那样同步.要了解更多信息,请阅读此博客文章.

function ajaxFunction ( )
Run Code Online (Sandbox Code Playgroud)

其次,我建议你使用现有的,强大的,深入开发,维护良好的JavaScript库Ajaxical功能,如jQuery的,而不是重新发明AJAX轮和战斗/挣扎/与浏览器的具体问题/故障/行为/阵痛堪忧.我还建议使用JSON作为服务器上的Java Servlet和客户端上的JavaScript之间的数据传输格式.在Java方面,你可以使用伟大的Gson库.

这是所有提到的技术的启动示例.让我们从Servlet和JavaBean开始:

public class JsonServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Data> list = dataDAO.list();
        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(new Gson().toJson(list));
    }
}

public class Data {
    private Long id;
    private String name;
    private Integer value;
    // Add/generate getters/setters.
}
Run Code Online (Sandbox Code Playgroud)

JsonServlet(你可以命名为任何你想要的,这仅仅是一个基本的例子)可以被映射在web.xml一个已知的url-pattern,让我们用/json这个例子.该类Data只表示HTML表(和数据库表)的一行.

现在,您可以在jQuery.getJSON的帮助下加载表格:

$.getJSON("http://example.com/json", function(list) {
    var table = $('#tableid');
    $.each(list, function(index, data) {
        $('<tr>').appendTo(table)
            .append($('<td>').text(data.id))
            .append($('<td>').text(data.name))
            .append($('<td>').text(data.value));
    });
});
Run Code Online (Sandbox Code Playgroud)

tableid过程的表示id所述的<table>有问题的元素.

那应该是它.毕竟它相当简单,相信我.祝好运.