簡體   English   中英

如何使用Javascript從外部URL獲取CSV文件

[英]How to get a CSV file from an external URL using Javascript

我正在嘗試從以下URL( http://s3.amazonaws.com/misc-ww/data.csv )獲取CSV文件,並動態解析此文件中的數據。 我試圖通過解析文件中的數據來實現的目的很重要,如果您希望對文件提出建議,請隨時查看該文件; 但是我目前的問題在於獲取文件本身中的數據 使用XMLHttpRequest或Ajax調用或JSONP調用時; 響應總是返回錯誤。 這意味着由於某種原因無法訪問該文件。

經過幾個小時的研究,我確信這與某種安全性限制(跨域請求)有關,可悲的是,我還沒有進一步了解如何解決它。 出於示例目的,我創建了一個jsFiddle來突出顯示我通過AJAX JSONP調用(以下代碼所示)檢索CSV文件的嘗試。

的HTML

<button>Click me to get the CSV File</button>

Java腳本

function getCSV() {
    $.ajax({
        url: "http://s3.amazonaws.com/misc-ww/data.csv",
        type: 'get',
        dataType: 'jsonp',
        success: function(data) {
            alert("Success: " + data);
        },
        error: function(jqXHR, textStatus, errorThrow){
            alert("Error: " + jqXHR['responseText']);
        }
    });
}

$('button')。click(function(){getCSV();});

我的主要目標是僅通過Javascript就可以實現這一目標,但是我歡迎涉及jQuery的所有答案。 我知道可以使此功能對我有用的javascript框架,但就我而言,我需要在沒有它們的情況下進行編碼。

如果服務器不支持,則無法使用JSONP調用繞過CORS。 它更多的是服務器不必設置“ Access-Control-Allow-Origin:*”標頭的方式。 相反,服務器可以在回調函數內發送響應以繞過直接的JSON響應。 因此,您的問題是您的.csv文件未包裝在回調函數中。

因此,支持JSONP並獲得?callback = cbFunc的服務器將打印:

cbFunc('here is my file content')

現在,您正在詢問.csv文件,服務器正在發送它,而沒有將其包裝到回調函數中。 因此,您最終受到安全性限制。

長話短說:因為s3.amazonaws.com不支持JSONP ,所以無法通過AJAX JSONP獲取文件。

這是有關JSON和JSONP的很好的解釋: http : //json-jsonp-tutorial.craic.com/index.html

很抱歉重復我自己。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM