отправить идентификатор запроса с XMLHttpRequest на сервер - PullRequest
0 голосов
/ 21 января 2020

Спасибо, что прочитали мой вопрос. Пожалуйста, будьте любезны поддержать меня!

Здесь я развернул запрос Get с Id для передачи с клиентской стороны на серверную для загрузки файла Excel в соответствии с Id.

на стороне клиента js файл

$scope.getAUGFile = function () {

                var xhr = new XMLHttpRequest();
                xhr.withCredentials = true;
                var params = JSON.stringify({ articleId: articleId });
                var url = RESOURCES.USERS_DOMAIN + '/AUGFile/excelDownload/'
                xhr.open("GET", url+"?"+params);
                xhr.setRequestHeader("authorization", getJwtToken());
                xhr.responseType = 'blob';

                xhr.onload = function () {
                    if (this.status === 200) {
                        saveAs(xhr.response, "mvvAUGExcelTemplate.xls");
                    }
                };

                xhr.send(null);
            };

файл на стороне сервера js файл (весенняя загрузка)

@RequestMapping(value = "/AUGFile/excelDownload/{articleId}", method = RequestMethod.GET)
    public ResponseWrapper excelGenerateAUG(HttpServletRequest request, HttpServletResponse response,@PathVariable Long articleId){

        try{
            fileService.downloadAUGFile(request,response,articleId);
            return ResponseWrapper.successWithMessage(messageSource.getMessage("success_code",null, Locale.ENGLISH));
        } catch (Exception e){
            lOG.error(">> Excel file Download error", e);
            return ResponseWrapper.failWithMessage(messageSource.getMessage("fail_code", null, Locale.ENGLISH));
        }
    }

Когда я выполняю функция на стороне клиента В серверной части примите значение articleId как NULL . Как я могу это исправить? Любые советы, помощь, указатели приветствуются!

Ответы [ 2 ]

0 голосов
/ 21 января 2020

Я понял правильный путь! Сейчас он работает.

на стороне клиента js файл

$scope.getAUGFile = function () {

                var xhr = new XMLHttpRequest();
                xhr.withCredentials = true;
                var url = RESOURCES.USERS_DOMAIN + "/AUGFile/excelDownload/"+articleId;
                xhr.open("GET", url);
                xhr.setRequestHeader("authorization", getJwtToken());
                xhr.responseType = 'blob';

                xhr.onload = function () {
                    if (this.status === 200) {
                        saveAs(xhr.response, "mvvAUGExcelTemplate.xls");
                    }
                };

                xhr.send(null);
            };

на стороне сервера js файл

 @RequestMapping(value = "/AUGFile/excelDownload/{articleId}", method = RequestMethod.GET)
    public ResponseWrapper excelGenerateAUG(HttpServletRequest request, HttpServletResponse response,@PathVariable("articleId") String articleId){

        try{
            fileService.downloadAUGFile(request,response,articleId);
            return ResponseWrapper.successWithMessage(messageSource.getMessage("success_code",null, Locale.ENGLISH));
        } catch (Exception e){
            lOG.error(">> Excel file Download error", e);
            return ResponseWrapper.failWithMessage(messageSource.getMessage("fail_code", null, Locale.ENGLISH));
        }
    }
0 голосов
/ 21 января 2020

first console.log(articleId) внутри вашей функции, чтобы увидеть, определена ли она и доступна ли xhr для отправки

и попробуйте это вместо xhr.open("GET", url+articleId);

или попробуйте это xhr.open("GET", url+"?articleId="+articleId);

...