Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否将servlet的数组响应写入JavaScript?_Java_Arrays_Servlets_Printwriter - Fatal编程技术网

是否将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格式,您可以在这个答案中查看一个很好的示例