2011-08-04 44 views
0

我確定這是一個愚蠢的疏忽,但我無法弄清楚如何讓jQuery的'getJSON'函數正常工作。出於測試目的,我必須設置爲一個目錄如下:使用jquery閱讀json數據時遇到的麻煩

test.html 
js/ 
    jquery-1.6.2.min.js 
    test.js 
ajax/ 
    test.json 

和在test.html<head>我有線

<script type="text/javascript" src="js/jquery-1.6.2.min.js"></script> 
<script type="text/javascript" src="js/test.js"></script> 

作爲getJSON功能的第一次測試,test.js內容如下:

$(document).ready(function() { 
    $.getJSON('ajax/test.json', function(data) { 
     alert('Success!'); 
    }); 
} 

不過, '的test.html' 被載入時沒有任何反應。我有一種感覺,'ajax/test.json'路徑規範是問題,但我不知道爲什麼。

編輯︰我壞的大括號,這實際上罰款的代碼我只是錯誤複製粘貼。我打開了Chrome開發人員工具,現在看到一個XMLHttpRequest錯誤,解釋如下:「Access-Control-Allow-Origin不允許原產地null」。編輯2:那很討厭..看起來像是Chrome issue。在Safari上運行良好。作爲一種解決方法,您可以在基本目錄中啓動python -m SimpleHTTPServer,並訪問localhost:8000/test.html中的頁面,在這種情況下,Chrome可以正常工作。

+0

打開Firebug或Chrome開發者工具或任何與瀏覽器相同的內容。看看Net標籤,看看你是否得到404s。看看控制檯,看看你是否有JS錯誤。 – Quentin

+0

謝謝..我剛剛做了,它看起來像有一個XMLHttpRequest錯誤的解釋:「原始null不允許訪問控制,允許來源」。這是什麼意思? – macaroon5

回答

0

這聽起來就像你試圖直接從fi上運行這個一樣樂系統。通過HTTP提供頁面(通過安裝Web服務器)並使用它。

本地網頁對HTTP網頁有許多不同的安全規則。

+0

是的,是的,謝謝 – macaroon5

3

您需要正確地關閉在getJSON回調函數的支架和ready功能:

$(document).ready(function() { 
    $.getJSON('ajax/test.json', function(data) { 
     alert('Success!'); 
    }); 
}); 
+0

原始問題中的路徑是正確的。 – Quentin

+0

啊,是的。你是對的。我以某種方式沒有考慮到JS可能只包含在HTML文件的根目錄中......現在編輯。 –

+0

我的b是原始問題中的一個錯字..我現在更新了 – macaroon5

1

代碼:

$.getJSON('ajax/test.json', function(data) { 
    alert('Success!'); 
); // you missed a curly brace here. that may be a problem 

正確的代碼:

$.getJSON('ajax/test.json', function(data) { 
     alert('Success!'); 
}); 
+0

我的b是一個錯字 – macaroon5