这可能是一个简单的问题,但我还没有找到解决方法。我想通过ajax调用从服务器下载csv文件(由ASP.NET Web API实现):
$.ajax({
type: "GET",
accepts: "text/csv; charset=utf-8",
url: "/api/employees",
success: function (data) {
}
});
我在上面的jQuery ajax中放了Accepts标头。但是从小提琴手那里,我看到了:
Accepts标头现在变为Accept: undefined
。如果我试着把:
accepts: {
csv: "text/csv; charset=utf-8"
}
接受标题现在变为:Accept: */*
所以我想这是让我的服务器返回JSON对象而不是CSV文件的要点。
如何正确地在jQuery ajax中创建接受标头?并且在小提琴手中应该看到:
Accept: text/csv
我正在使用Chrome。
答案 0 :(得分:10)
尝试
$.ajax({
headers: {
Accept : "text/csv; charset=utf-8",
"Content-Type": "text/csv; charset=utf-8"
}
...
答案 1 :(得分:3)
虽然dakait的回答是正确的,但我会清理它并提供解释。
$.ajax({
url: '/path',
headers:{ 'Accept': 'text/csv',
'Content-Type': 'text/csv' },
...
在上面的示例中,我们明确设置了两个标题。
我认为正在发生的事情是jQuery有自己的逻辑来处理基于accepts
(不是Accept)和dataType字段的Accept和Content-Type头。
因此,如果dataType为空(由于csv不是受支持的dataType),即使您设置了Accept标头或接受了param,它也会禁止Accept标头。
它似乎不是一个直观的界面,但它适用于许多人。我认为如果文档更好,它会减少混淆。