2015-06-10 50 views
0

我試圖通過JavaScript訪問一個簡單的數據文件,並發現它非常困難的一個遠程文件。它將被放置在遠程服務器上,並希望可以通過http訪問。我是JavaScript新手,但是這裏有:到目前爲止我在JSONP中找到的最佳選項,如https://learn.jquery.com/ajax/working-with-jsonp/所述。打開使用JSON數據在JavaScript

我已經創建了一個例子數據文件,我將不得不過程:http://murded.keeleleek.ee/test2.txt

<html> 

<head> 
    <title>My experiment</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
</head> 
<script type="text/javascript"> 
    // Using YQL and JSONP 
    $.ajax({ 
     url: "http://murded.keeleleek.ee/test2.txt", 

     // The name of the callback parameter, as specified by the YQL service 
     //jsonp: "callback", 

     // Tell jQuery we're expecting JSONP 
     dataType: "jsonp", 

     // Tell YQL what we want and that we want JSON 
     data: { 
      q: "dataprev", 
      format: "json" 
     }, 

     // Work with the response 
     success: function(response) { 
      console.log(response); // server response 
     } 
    }); 
</script> 

</html> 

最後,我只想使用JSON值作爲一個數組,現在來看,只是打印出來到控制檯或屏幕,以確保它們的存在。有人能幫我解決這個問題嗎?也許有一種更簡單的方法?

不幸的是我新的JavaScript和JSON,所以有可能是一個簡單的新手的錯誤。該文件應該位於遠程服務器上,只需讀取訪問權限即可導入。非常感謝!

+0

的文件,其內容要返回不包含JSONP。您應該閱讀https://en.wikipedia.org/wiki/JSONP以更熟悉它。 –

+0

謝謝,我將研究如何正確編碼它。儘管使用JSONP並不重要,但我只需要從另一臺服務器上的某個文件中獲取數據以某種方式使用(這不會涉及用戶選擇文件)。再次感謝。 – puslet88

回答

0

$ .getJson

$.getJSON(
     "http://murded.keeleleek.ee/test2.txt",    
      data: { 
     q: "dataprev", 
     format: "json" 
    }, 
function(response) { 
     console.log(response); // server response 
    } 
     ) 
+0

謝謝,這看起來乾淨,但之後的參數列表告訴我丟失的)上的數據線:{ - 我個人沒有看到任何...什麼想法可能是錯誤的?文件上下文與上述完全相同。 – puslet88

+0

再試一次,有一個額外的逗號 – n00b

+0

這不起作用,該URL包含純文本,而不是JSON。 – Quentin

0

如果你的代碼的簡單方法是使用,你說:

// Tell jQuery we're expecting JSONP 

但是你的網址不包含JSONP。它包含純文本。

爲了處理它作爲JSONP您必須將其格式化爲JSONP

這意味着:

  • JSON的核心(例如,參見http://json.org/
  • 包裹着一個JavaScript函數調用:foo(YOUR_JSON);
  • application/javascript內容類型提供(所以你應該使用一個.js文件擴展名,如果你正在提供一個靜態文件)

如果你使用的是一個靜態文件,那麼你被迫對回調名稱進行硬編碼(上面例子中的foo)。你需要告訴jQuery的該回調的名字,而不是讓它產生一個動態的:

jsonp: "foo" 

NB:JSONP是解決跨域問題破解。與使用XMLHttpRequest相比,它有很多限制,包括限制您可以做什麼來處理錯誤。現在在瀏覽器中支持CORS,所以不再需要JSONP。如果您不是通過原始地址發送請求,那麼您不需要事件。