我正在尝试使用PrintWriter.out.write()
编写单个Array对象作为对JavaScript(AJAX)函数的响应,
这可能吗?或者我需要在发送之前以相同的方式转换数组吗?
试图避免创建逗号分隔的String然后在JS中解析
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.write(listDir());
}
private File[] listDir(){
File folder = new File("/home/rob/");
File[] listOfFiles = folder.listFiles();
//System.out.println("Number of files found: " + listOfFiles.length);
return listOfFiles;
}
然后想要遍历调用JavaScript AJAX函数中的文件:
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
for (var i = 0; i < xmlhttp.responseText.length; i++) {
alert(xmlhttp.responseText[i]);
}
}
答案 0 :(得分:4)
Java的数组对象没有toString()
方法的实现。因此,您的输出来自
out.write(listDir());
看起来像
[Ljava.io.File;@5d9d277e
你绝对不希望这样。有许多方法可以序列化数组。其中之一是按,
out.write(Arrays.toString(listDir()));
给你类似
的东西[some.txt, other.png]
其他格式包括JSON和XML。由于Javascript带有内置的JSON解析器,我建议你使用JSON。您可以找到Java JSON库here。如果您返回类似JSON(例如application/json
)的内容,请更改内容类型。