2013-09-01 2 views
1

Я пытаюсь написать один объект Array с использованием PrintWriter.out.write() в качестве ответа на функцию JavaScript (AJAX),
Возможно ли это? или мне нужно будет преобразовать массив таким же образом перед отправкой?
Пытаясь избежать создания разделенных запятыми, а затем разборе в JSНапишите ответ массива от сервлета к JavaScript?

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

Поскольку вы не хотите получать ответ от сервлета в текстовом формате, вам придется преобразовать результат в формат JSON, вы можете проверить хороший пример в этом ответе http://stackoverflow.com/a/ 4113258/2727401 – fujy

ответ

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).

 Смежные вопросы

  • Нет связанных вопросов^_^