2013-07-19 50 views
0

我在S3工作的任何信息。在一個桶中,我有一個browser.json文件,jquery.js和index.html。在我的index.html中,我正在編寫一個讀取我的JSON文件的腳本。這裏是我的代碼看起來像......JQuery的不返回的JSON文件

!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript" src="jquery.js"></script> 
</head> 
<body> 
    <script> 
     $.getJSON('https://s3.amazonaws.com/plxscreenshots/browser.json', function(data) { 
      alert(data.date) 
     }); 
    </script> 
    <p> I hope this works!</p> 
</body> 

我仍然很新的HTML/JavaScript,但我覺得這應該是工作,它不是,有什麼建議?

+8

規則1當JavaScript不起作用時:**看看錯誤控制檯**。你有這個錯誤:* XMLHttpRequest無法加載https://s3.amazonaws.com/plxscreenshots/browser.json。來源http://run.jsbin.com不允許通過Access-Control-Allow-Origin。* – Quentin

+0

如果我請求文件,我只會得到日期。試試這個:'alert(data.Date)' –

+1

它發回的JSON格式不正確,不包含'value1'屬性,只是'date'。 – Corion

回答

1

所以,你有一對夫婦的被這裏發生的問題。

  1. 首先你有相同的起源問題,which has been addressed elsewhere
  2. 其次,你必須格式混亂的JSON在JSON文件,
  3. 第三你沒有VALUE1財產。

我希望你的JSON文件看起來更像是這樣的:

{"date": "2013-07-19", "value1": 5678 } 

注意如何既鍵日引述?在JSON,你要引用什麼這是不是一個數字,對象([]{}),或布爾(truefalse)。還請注意,沒有尾隨逗號?

前兩個問題將導致錯誤之前,你甚至得到反饋,因爲你沒有錯誤處理程序,它會悄悄地失敗(不過希望你至少在你的JavaScript控制檯看到錯誤)。您可以通過將.error(function(a) { alert("error"); console.log(e); })添加到函數的末尾來使其更容易一些。例如:

$.getJSON(<my-url>, function(data) { 
    alert(data.value1) 
}).error(function(a) { alert("error"); console.log(e);}); 
0

1)同源域策略不會允許你從文件加載使用AJAX不同的域。

2)您的文件不包含JSON。它包含:

{date : 2013-07-19 , } 

JSON看起來像:

{"date": "2013-07-19"}