2013-03-11 14 views
7

To może być proste pytanie, ale jeszcze nie znalazłem sposobu, aby to rozwiązać. Chciałbym, aby pobrać plik CSV z serwera (realizowanego przez ASP.NET Web API) przez wywołanie ajax:Jak dodać Accept nagłówka z tekstem/csv w jQuery ajax

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

mam umieścić akceptuje nagłówek w jQuery AJAX jak powyżej. Ale z Skrzypek, widzę:

enter image description here

akceptuje nagłówek teraz odwraca się do Accept: undefined. Gdy próbuję umieścić:

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

akceptuje żniwna teraz odwraca się do: Accept: */*

enter image description here

Więc myślę, że to główny punkt, aby mój serwer zwraca obiekt JSON zamiast pliku CSV.

Jak poprawnie ustawić Akceptuj nagłówek w jQuery ajax? i zobacz w skrzypce powinno być: Accept: text/csv

Używam Chrome.

Odpowiedz

6

spróbować

$.ajax({ 
    headers: { 
     Accept : "text/csv; charset=utf-8", 
     "Content-Type": "text/csv; charset=utf-8" 
    } 
... 
+5

Dzięki, to działa. Ale nie rozumiem, dlaczego dwie opcje, które podałem, nie zadziałały –

3

Chociaż odpowiedź dakait jest prawidłowa, będę go oczyścić i oferują wyjaśnienie.

$.ajax({ 
    url: '/path', 
    headers:{ 'Accept': 'text/csv', 
      'Content-Type': 'text/csv' }, 
    ... 

W powyższym przykładzie wyraźnie ustawiamy dwa nagłówki.

Myślę, że to, co się dzieje, to to, że jQuery ma własną logikę obsługi nagłówków Accept i Content-Type na podstawie pól accepts (nie przyjmuje) i dataType.

Tak więc, jeśli typ danych jest pusty, (co byłoby, ponieważ csv nie jest obsługiwanym typem danych), tłumi nagłówek Accept, nawet jeśli ustawisz nagłówek Accept lub akceptujesz parametr.

Nie wydaje się być intuicyjnym interfejsem, ale działa dobrze dla wielu osób. Myślę, że gdyby dokumentacja była lepsza, spowodowałaby mniej zamieszania.

Powiązane problemy