在AJAX中处理servlet输出
我的问题:我正在从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");
}
}
}
回答:
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表(和数据库表)的一行。
现在,这是如何使用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>
有问题的元素。
应该是这样。毕竟这很简单,请相信我。祝好运。
以上是 在AJAX中处理servlet输出 的全部内容, 来源链接: utcz.com/qa/410720.html