私はを使用して単一のArrayオブジェクトを書き込もうとしています PrintWriter.out.write()
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]);
}
}
回答:
回答№1は4Javaの配列オブジェクトはの実装を持っていません toString()
方法。そのため、あなたの出力は
out.write(listDir());
のようになります
[Ljava.io.File;@5d9d277e
配列を直列化する方法はたくさんあります。そのうちの1つは、次の要素によって要素を分離することです。 ,
out.write(Arrays.toString(listDir()));
あなたに何かを与える
[some.txt, other.png]
その他の形式にはJSONとXMLがあります。 JavascriptにはJSONパーサーが組み込まれているので、JSONを使用することをお勧めします。 Java JSONライブラリを見つけることができます ここに。 JSONのようなものを返す場合はcontent-typeを変更してください(例: application/json
)。