这可能是一个简单的问题,但我还没有找到解决的方法。我想通过ajax调用从服务器(由ASP.NET Web API实现)下载csv文件:
$.ajax({
type: "GET",
accepts: "text/csv; charset=utf-8",
url: "/api/employees",
success: function (data) {
}
});
我已经像上面一样把Accept头放在了jQuery ajax中。但从小提琴手那里,我看到:
Accept标头现在变为Accept: undefined
。如果我试着把:
accepts: {
csv: "text/csv; charset=utf-8"
}
Accept标头现在变为:Accept: */*
所以我猜这就是让我的服务器返回JSON对象而不是CSV文件的主要原因。
如何在jQuery ajax中正确地制作Accept标头?在小提琴手中看到的应该是:Accept: text/csv
我使用的是Chrome。
发布于 2013-03-11 15:21:32
试一试
$.ajax({
headers: {
Accept : "text/csv; charset=utf-8",
"Content-Type": "text/csv; charset=utf-8"
}
...
发布于 2016-10-24 01:17:20
虽然dakait的回答是正确的,但我将对其进行清理并提供解释。
$.ajax({
url: '/path',
headers:{ 'Accept': 'text/csv',
'Content-Type': 'text/csv' },
...
在上面的例子中,我们显式地设置了两个头。
我认为,基于accepts
(非Accept)和dataType字段,jQuery有自己的逻辑来处理Accept和Content-Type头部。
因此,如果dataType为空(这是因为csv不是受支持的dataType),即使您设置了Accept头或Accept参数,它也会抑制Accept头。
它似乎不是一个直观的界面,但它对许多人来说都很好用。我认为如果文档更好一些,就不会造成太多的混乱。
https://stackoverflow.com/questions/15333086
复制相似问题