Загрузить CSV через ajax (dataType is jsonp) - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь загрузить 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 "} Как я могу решить эту проблему?

...