Я пытаюсь загрузить CSV-файл через ajax.
код restController
@RequestMapping(value = "audit/search/csv", method = RequestMethod.GET)
public ModelAndView auditSearchCsv(/*@RequestBody JSONObject jsonParam,*/ HttpServletRequest request) throws ParseException {
final Enumeration<?> enumber = request.getParameterNames();
final HashMap<String, Object> param = new HashMap<String, Object>();
while (enumber.hasMoreElements()) {
final String key = enumber.nextElement().toString();
final String value = request.getParameter(key);
param.put(key, value);
}
final JSONObject jsonParam = (JSONObject) new JSONParser().parse((String) param.remove(JSONPAdvice.KEY_JSON_PARAM));
String index = (String)jsonParam.get("index");
APIResponseVO vo = requestSearch(jsonParam);
ApiCsvView view = new ApiCsvView();
view.setFileName(index+"_log.csv");
ModelAndView model = new ModelAndView();
model.setView(view);
model.addObject("data", vo.getRows());
model.addObject("index", index);
model.addObject("result", "OK");
return model;
}
jsp код
$. Ajax ({
url: 'http://localhost:8080/search/jsonp?jsonParam=' + encodeURI(jsonParam),
dataType: 'jsonp',
success: function(data) {
console.log(JSON.stringify(data));
},
error: function(xhr) {
console.log('fail : ', xhr);
}
});
В jsp я установил dataType как 'jsonp', закодировал все параметры и сделал запрос.
Внутри метода Controller объект modelAndView установил ApiCsvView, который наследует класс AbstractView в качестве представления, и возвращенный методit.
Тем не менее, он никогда не загружает CSV-файл, но я вижу сообщение об ошибке на консоли браузера, которое говорит: «fail: Object {readyState: 4, responseText: бла-бла-бла, status: 200, statusText:»parsererror "} Как я могу решить эту проблему?