繁体   English   中英

写一个从servlet到JavaScript的数组响应?

[英]Write an array response from servlet to JavaScript?

我正在尝试使用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]);
    } 
}

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库。 如果返回类似JSON(例如application/json )的内容,请更改内容类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM