我在使用 jQuery 将数据从网页发布到 servlet 时遇到一些问题。虽然我是一位经验丰富的 Java 开发人员,但我对 javascript/jQuery/servlets 还是很陌生。我正在使用 Eclipse、Apache Tomcat 和 Chrome。
我有一个 XML 文件(大小从 6KB 到 30MB),我希望将其加载到浏览器中,进行修改,然后发布到 servlet。
我的 HTML 有:
<input id="filechooser" type="file" onchange="readFile()">
我的 JS 有:
var file = document.getElementById('filechooser').files[0];
var reader;
reader = new FileReader();
reader.readAsText(file, "UTF-8");
reader.onload = loaded;
function loaded(evt){
var result = evt.target.result;
var xml = $(result);
...
[make modifications to xml]
}
我在修改 xml 时使用的一些 jQuery 代码是$(xml).find("NODE").val()
和$(xml).find("OTHER_NODE").attr("attribute-name","newValue")
我现在需要将该 xml 发布到一个 URL,它将用于处理一些信息。在 Chrome 控制台中,我可以查看 xml 对象的内容:
> xml
[<!--?xml version="1.0" encoding="ISO-8859-1"?-->,#text,
<root_element>...</root_element>]
> $(xml)
[<!--?xml version="1.0" encoding="ISO-8859-1"?-->,#text,
<root_element>...</root_element>]
> console.dir(xml)
jQuery.fn.jQuery.init[3]
0: #comment
1: #text
2: root_element
length: 3
__proto__: Object[0]
到目前为止,我的 servlet 是空的:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Post");
}
我创建了一个执行一些 javascript 的按钮。以下两个代码片段都发布到服务器:
$.post("http://localhost:8080/MyWebApp/MyWebAppUrl", xml);
和:
$.ajax({
type: "POST",
url: "http://localhost:8080/MyWebApp/MyWebAppUrl",
data: xml
});
我的问题是,我不知道我是否正确发送了我的 XML,或者如何正确使用它。我需要对我的 jQuery 代码做些什么才能正确发布它?如何从我的 HttpServletRequest 中获取它?如果我可以将 xml 文本作为字符串获取,我就确切地知道如何在 Java 中操作它,并让它做任何我想做的事情。
在网上搜索了 10 多个小时后,我仍然找不到答案。我确定它就在那里,但我似乎无法将这些点联系起来。
更新:
epascarello 因发布 XML 文档而脱颖而出。但是,我错误地解析了文档。
请注意,我读取了文件,然后存储了结果var xml = $(result)
。该文件被读取为文本字符串,我将其转换为 HTML 文档。
我需要做的是var xml = jQuery.parseXML(result)
。这样,我不必将其转换回文本字符串,并且标记大写保持不变。
请注意,保持大小写非常重要。