Vui lòng xem xét javascript này:Nhận .csv tập tin dưới dạng dữ liệu trong chức năng thành công 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 trả về một tập tin .csv, nhưng tôi xác định kiểu dữ liệu jsonp
bởi vì đây là một yêu cầu ajax cross-domain . Không có tham số đó, tôi nhận được lỗi "origin is not allowed".
Vì tôi chỉ định loại dữ liệu jsonp
, hàm ajax ném lỗi vì tệp .csv không phải là định dạng JSON. Nhưng trong giao diện điều khiển dev tôi có thể thấy rằng trình duyệt KHÔNG nhận được tệp .csv mạch lạc. Vì vậy, tôi biết tôi đang thành công khi nhận tệp CSV. Tôi nghĩ rằng nó sẽ là có thể, nhưng tôi không chắc chắn làm thế nào để nhận được một cách chính xác này csv tập tin vào chức năng ajax của tôi ??
Tất nhiên nếu tôi có thể làm cho URL này trả về một chuỗi JSON được định dạng đúng sẽ là tốt nhất, nhưng tôi không chắc chắn tôi có thể làm điều đó.
Đây là một fiddle nơi bạn có thể thử nó, bạn sẽ phải mở ra dev console để thấy rằng lỗi: http://jsfiddle.net/92uJ4/3/
Any help is appreciated rất nhiều.
Tim
Cảm ơn bạn vì những thông tin tuyệt vời. Tôi đã nghĩ rằng đó là trường hợp phương pháp kéo thông tin này không thực sự khả thi. Giải pháp của bạn trông tuyệt vời, tôi đã xem xét YQL trước đây, tôi đoán đó là cách để làm điều đó. –
Việc triển khai này có lưu bất kỳ thứ gì vào cơ sở dữ liệu YQL không? hay nó chỉ lấy dữ liệu để thao tác tiếp theo? Cảm ơn @JoeC –
@ PT_C: Theo như tôi biết, nó không lưu bất kỳ thứ gì vào cơ sở dữ liệu YQL. Nó chỉ nên là một thông qua. Tuy nhiên, vì đây là bên thứ ba, bạn không thể đảm bảo rằng họ không đăng nhập thông tin đi qua hệ thống của họ, vì vậy tôi sẽ không sử dụng thông tin này cho bất kỳ điều gì nhạy cảm. Sẽ tốt hơn nếu bạn triển khai giải pháp phía máy chủ của riêng bạn để lấy dữ liệu trong trường hợp đó. –