2012-08-17 187 views
0

我想使用跨域AJAX請求獲取CSV。我正在使用jQuery。跨域ajax請求jquery抓取CSV

我知道我們可以使用JSONP來跨域ajax請求,但是在這裏我必須抓取CSV而不是JSON。

它是一個內部網站,需要登錄,所以我不能使用YQL。

有沒有其他辦法。以下是我的代碼

 $.ajax({ 
     url: 'http://si-dtp-219:3333/WS/WS/dshbrdData?reportname=Svt', 
     dataType : 'text', 
     callback : callbackFunction, 
     crossDomain : true, 
     type: 'GET', 
     timeout: 50000, 
     success: function(res) { 
      callbackFunction(JSON.stringify(res)); 
     }, 
     complete: callbackFunction, 
     error: function(x, t, m) { 
      if(t==="timeout") { 
       alert("got timeout"); 
      } else { 
       console.log(x); 
       console.log(t); 
       console.log(m); 
      } 
     } 


    }); 
+0

如果資源是一個CSV文件的內容之外,有什麼問題呢? – 2012-08-17 13:19:12

+0

你使用什麼服務器端語言? – 2012-08-17 13:19:32

+0

@drim: - 它是一個跨域請求,所以我不需要打擾服務器端語言。我只需要使用javascript打開網址並獲取內容。 如果我複製響應內容並將其保存到本地並激發諸如url:'local.txt'的ajax請求,則其工作非常良好。 – 2012-08-17 13:22:36

回答

0

那麼,你仍然可以使用JSONPish調用。你應該做的是在你的URL中添加一個腳本標籤,將該值賦給一個變量,而不是用你想要的數據。您應該使用純JS而不是jQuery,因爲它需要JSON格式。

http://devlog.info/2010/03/10/cross-domain-ajax/

1

對於我們的Intranet網站,我們經常使用代理腳本來處理此問題。也就是說,你在你的Intranet上寫一個代表你的請求的腳本。如果你使用PHP它可能是簡單的:

<?php 
echo file_get_contents("whatever_url"); 
?> 

然後在您的JavaScript應用,你只是讓你的AJAX調用域內,這個網頁。這樣就沒有跨域問題(客戶端的請求是域內的頁面,服務器端請求對域沒有限制)。

+0

我不能使用任何服務器端腳本語言..我必須使用AJAX獲取數據.. – 2012-08-17 13:27:46

+0

我相信這意味着你運氣不好。 – 2012-08-17 13:33:15

+0

@AnupSingh這在技術上仍然是AJAX,你只是向自己的頁面發出一個請求,而不是原始請求,然後讓代理完成請求的第二部分。如果您無法控制自己的服務器端腳本,那麼這更復雜,我不確定是否有令人滿意的解決方案。 – Telgin 2012-08-17 13:33:43