尝试下载excel文件时,在angular4中的响应数据中出现语法错误

时间:2018-04-04 15:23:14

标签: excel angular django-rest-framework angular4-httpclient

我想通过单击角度页面中的按钮来下载excel文件。 当用户单击button时,click事件会触发服务方法调用:

downloadExcel(){
    this.componentService.getExel().subscribe(
        data => {
          console.log("To Download:", data);      // this part is not executed, throwing Syntax Error* shown below
          //Here, function called to download excel-file with data
        }
   );
}

服务:

getExel(){
    let url = 'http://url/endpoint/';
    return this.httpClient.get(url);
}

**语法错误:

  

错误:SyntaxError:位于poisition 0的JSON中的意外标记P.   JSON.parse

在Django REST框架方面:

class GetExcel(APIView):
    def get(self, request, format=None):
       with open('path/to/excel/file', 'rb') as tempfile:
           tempdata = tempfile()
           ResponseData = HttpResponse(tempdata, content_type='application/vnd...')
           ResponseData['Conetent-Disposition']="attachment; filename=%s" %Filename
       return ResponseData

所以,我无法弄清楚我犯了哪些错误。请告诉我们如何解决它。

2 个答案:

答案 0 :(得分:1)

...Unexpected token P in JSON at poisition 0 at JSON.parse

因此,在响应对象中,HTTPClient api尝试解析来自httpClient.get(url)调用的响应,因此存在JSON格式错误。问题出在data对象中,但它是由HTTP响应本身格式错误引起的。

答案 1 :(得分:1)

您可以在这篇文章中查看:how-to-properly-download-excel-file-with-angular2。这或多或少与您的要求相似。