HttpClient - Как запросить данные не в формате JSON - PullRequest
0 голосов
/ 03 апреля 2019

SyntaxError: Неожиданный токен P в JSON в позиции 0 в JSON.parse

Я хочу загрузить Excel через API. Я попробовал этот метод, но, к сожалению, я получаю эту ошибку

SyntaxError: Неожиданный токен P в JSON в позиции 0 в JSON.parse () в XMLHttpRequest.onLoad (http://localhost:5002/vendor.js:28768:51)

мой код здесь

getSalesARExcel(attach: string): Observable<any>{
    const obj={
        "AttachmentId":attach
    }
    return this.http.post(baseUrl + 'api/report/aging/receivables/summary/download/xlsx', obj ,{
        headers: new HttpHeaders({
            'Content-Type': 'application/json',
            "Authorization":'Bearer ' + localStorage.getItem('token'),
            'Access-Control-Allow-Origin':'*',
            'Access-Control-Allow-Headers':'Origin, Methods, Content-Type',
            'responseType': 'ResponseContentType.Blob'
        })
    })
}

this.excel.getSalesARExcel(value.attach).subscribe(res => {
    console.log("excel", res)
    this.downloadExcelFile(res);
})

downloadExcelFile(data: any){
    var blob = new Blob([data], { type: 'application/vnd.ms-excel' });
    var url= window.URL.createObjectURL(blob);
    window.open(url);
}

1 Ответ

0 голосов
/ 03 апреля 2019

Удалите заголовки CORS и сделайте responseType опцией, а не заголовком:

getSalesARExcel(attach: string): Observable<any>{
    const obj={
        "AttachmentId":attach
    }
    return this.http.post(url, obj ,{
        headers: new HttpHeaders({
            'Content-Type': 'application/json',
            "Authorization":'Bearer ' + localStorage.getItem('token'),
            ̶'̶A̶c̶c̶e̶s̶s̶-̶C̶o̶n̶t̶r̶o̶l̶-̶A̶l̶l̶o̶w̶-̶O̶r̶i̶g̶i̶n̶'̶:̶'̶*̶'̶,̶
            ̶'̶A̶c̶c̶e̶s̶s̶-̶C̶o̶n̶t̶r̶o̶l̶-̶A̶l̶l̶o̶w̶-̶H̶e̶a̶d̶e̶r̶s̶'̶:̶'̶O̶r̶i̶g̶i̶n̶,̶ ̶M̶e̶t̶h̶o̶d̶s̶,̶ ̶C̶o̶n̶t̶e̶n̶t̶-̶T̶y̶p̶e̶'̶,̶
            ̶'̶r̶e̶s̶p̶o̶n̶s̶e̶T̶y̶p̶e̶'̶:̶ ̶'̶R̶e̶s̶p̶o̶n̶s̶e̶C̶o̶n̶t̶e̶n̶t̶T̶y̶p̶e̶.̶B̶l̶o̶b̶'̶
        }),
        'responseType': 'blob'
    })
}

Заголовки CORS являются заголовками ответа, а не заголовками запроса.

responseType - это опция XHR, а не заголовок.

Для получения дополнительной информации см.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...