我的问题:我正在从JSP中的AJAX函数向Servlet发送请求。
Servlet处理数据并返回ArrayList。
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"); } } }
var profileXML = eval(<%=request.getAttribute("data")%>);
首先,我建议您了解JavaScript和JSP之间的隔the。JS完全在 客户端 运行,而JSP / Java完全在 服务器 运行。它们肯定不会像您认为的那样同步运行。要了解更多信息,请阅读此博客文章。
function ajaxFunction ( )
其次,我建议您使用具有jQuery之类的 Ajaxical功能的,健壮的,经过充分开发的,维护良好的JavaScript库,而不是重新发明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. }
的JsonServlet(你可以命名为任何你想要的,这只是一个简单的例子)应该被映射web.xml在一个已知的url- pattern,让我们用/json这个例子。该类Data仅代表HTML表(和数据库表)的一行。
JsonServlet
web.xml
url- pattern
/json
Data
现在,这是如何使用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)); }); });
该tableid过程的表示id所述的<table>有问题的元素。
tableid
id
<table>
应该是这样。毕竟这很简单,请相信我。祝好运。