是否将servlet的数组响应写入JavaScript?
我试图使用是否将servlet的数组响应写入JavaScript?,java,arrays,servlets,printwriter,Java,Arrays,Servlets,Printwriter,我试图使用PrintWriter.out.write()作为对JavaScript(AJAX)函数的响应来编写单个数组对象, 这可能吗?或者我需要在发送之前以相同的方式转换数组吗? 试图避免创建逗号分隔的字符串,然后在JS中进行解析 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException { response.setContentType
PrintWriter.out.write()
作为对JavaScript(AJAX)函数的响应来编写单个数组对象,这可能吗?或者我需要在发送之前以相同的方式转换数组吗?
试图避免创建逗号分隔的字符串,然后在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]);
}
}
if(xmlhttp.readyState==4&&xmlhttp.status==200){
for(var i=0;i
Java的数组对象没有实现toString()
方法。因此,您的输出来自
out.write(listDir());
看起来像
[Ljava.io.File;@5d9d277e
[some.txt, other.png]
你肯定不想要这个。序列化数组的方法有很多种。其中之一是通过,
out.write(Arrays.toString(listDir()));
给你一些
[Ljava.io.File;@5d9d277e
[some.txt, other.png]
其他格式包括JSON和XML。由于Javascript附带内置JSON解析器,我建议您使用JSON。您可以找到一个JavaJSON库。如果返回类似于JSON的内容(例如,
application/JSON
),请更改内容类型。Java的数组对象没有toString()方法的实现。因此,您的输出来自
out.write(listDir());
看起来像
[Ljava.io.File;@5d9d277e
[some.txt, other.png]
你肯定不想要这个。序列化数组的方法有很多种。其中之一是通过,
out.write(Arrays.toString(listDir()));
给你一些
[Ljava.io.File;@5d9d277e
[some.txt, other.png]
其他格式包括JSON和XML。由于Javascript附带内置JSON解析器,我建议您使用JSON。您可以找到一个JavaJSON库。如果您返回类似于JSON的内容(例如,application/JSON
),请更改内容类型。由于您不希望从Servlet以文本格式做出响应,因此必须将结果转换为JSON格式,您可以在该回答中查看一个很好的示例,因为您不希望从Servlet以文本格式做出响应,您必须将结果转换为JSON格式,您可以在这个答案中查看一个很好的示例