尝试 return Excel 电子表格时 JSON 中位置 0 的意外标记 P

Unexpected token P in JSON at position 0 when trying to return Excel spreadhsheet

我有一个 emberJS 应用程序,我可以在其中对 Django 后端进行 POST AJAX 调用。 Django 中的一个函数根据 POST 请求中的 ID 为一堆查询项目创建一个 xlsx 文件。它通过 Django 视图函数没有任何问题,但是当 HTTP 响应返回到 ember 时,我收到错误

SyntaxError: Unexpected token P in JSON at position 0
    at parse (<anonymous>)
    at ajaxConvert (jquery.js:8787)
    at done (jquery.js:9255)
    at XMLHttpRequest.<anonymous> (jquery.js:9548)
    at XMLHttpRequest.nrWrapper (base-content:20)

我将响应内容类型设置为 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,因此我不确定为什么它会尝试将响应读取为 JSON。

Python代码

file_path = '/User/path_to_spreadsheet/content.xlsx'
fsock = open(file_path, "rb")

response = HttpResponse(fsock, content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename="content.xlsx"'
return response

EmberJS 代码

export default Controller.extend({
  actions: {
    storeProductId(products) {
      let product_ids = []

      products.forEach(function(product){
        product_ids.push(product.id)
      });

      let adapter = this.store.adapterFor('product-export');
      adapter.export_products(product_ids).then(function(response){
        console.log(response)
      }).catch(function(response) {
        console.log('ERROR')
        console.log(response)
      })
    }
  }
});

产品-导出适配器代码

export default ApplicationAdapter.extend(FormDataAdapterMixin, {
  export_products(products) {
    let url = this.buildURL('unified-product');
    url = `${url}export/`;
    return this.ajax(url, 'POST', { data: {'products': products} });
  }
});

默认情况下,Ember Data 会就事物的处理方式做出一些假设(包括您将收到 JSON 数据)。您使用 Ember 数据而不是直接 Ajax 调用您的后端是否有原因?似乎这会大大简化这里的事情...