Proszę rozważyć ten skrypt:Otrzymuj .csv plik jako dane w funkcji sukcesu ajax
$.ajax({
url:'http://ichart.finance.yahoo.com/table.csv?s=GS&a=00&b=1&c=2010&d=08&e=3&f=2012&g=d&ignore=.csv',
type:'get',
dataType:'jsonp',
success:function(data){
alert(data);
}
})
URL zwraca plik .csv, ale jestem z określeniem rodzaju jsonp
danych, ponieważ jest to żądanie ajax cross-domain . Bez tego parametru pojawia się błąd "pochodzenia nie jest dozwolony".
Ponieważ określam typ danych jsonp
, funkcja ajax generuje błąd, ponieważ plik .csv nie ma formatu JSON. Ale w konsoli programisty widzę, że przeglądarka otrzymuje spójny plik .csv. Tak więc wiem, że pomyślnie otrzymuję plik CSV. Myślę, że powinno to być możliwe, ale nie jestem pewien, jak poprawnie otrzymać ten plik csv do mojej funkcji ajax?
Oczywiście, jeśli mógłbym zrobić ten URL, zwrócę poprawnie sformatowany ciąg JSON, który byłby najlepszy, ale nie jestem pewien, czy mogę to zrobić.
Oto skrzypce, gdzie można spróbować, trzeba będzie otworzyć konsolę dev zobaczyć ten błąd: http://jsfiddle.net/92uJ4/3/
Każda pomoc jest mile widziana.
Tim
Dziękuję za wspaniałą informację. Myślałem, że tak naprawdę ta metoda pozyskiwania informacji nie była możliwa. Twoje rozwiązanie wygląda świetnie, patrzyłem na YQL wcześniej, myślę, że to jest sposób, aby to zrobić. –
Czy ta implementacja zapisuje cokolwiek w bazie danych YQL? lub czy po prostu pobiera dane do dalszej manipulacji? Dzięki @JoeC –
@PT_C: O ile mi wiadomo, nie zapisuje niczego w bazie danych YQL. To powinno być po prostu przejście. Jednakże, ponieważ jest to strona trzecia, nie można zagwarantować, że nie logują informacji przechodzących przez ich systemy, więc nie użyłbym tego dla niczego wrażliwego. Lepiej byłoby zaimplementować własne rozwiązanie po stronie serwera do wyciągania danych w takim przypadku. –