尝试 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 调用您的后端是否有原因?似乎这会大大简化这里的事情...
我有一个 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 调用您的后端是否有原因?似乎这会大大简化这里的事情...