如何在jQuery ajax中添加带有text / csv的Accept Header

时间:2013-03-11 07:14:54

标签: jquery

这可能是一个简单的问题,但我还没有找到解决方法。我想通过ajax调用从服务器下载csv文件(由ASP.NET Web API实现):

$.ajax({
    type: "GET",
    accepts: "text/csv; charset=utf-8",
    url: "/api/employees",
    success: function (data) {
    }
});

我在上面的jQuery ajax中放了Accepts标头。但是从小提琴手那里,我看到了:

enter image description here

Accepts标头现在变为Accept: undefined。如果我试着把:

    accepts: {
        csv: "text/csv; charset=utf-8"
    }

接受标题现在变为:Accept: */*

enter image description here

所以我想这是让我的服务器返回JSON对象而不是CSV文件的要点。

如何正确地在jQuery ajax中创建接受标头?并且在小提琴手中应该看到: Accept: text/csv

我正在使用Chrome。

2 个答案:

答案 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标头。

它似乎不是一个直观的界面,但它适用于许多人。我认为如果文档更好,它会减少混淆。