2011-08-19 62 views
0

我有這樣的文件夾結構。Json文件未加載

  • [現場]
    • [JS]
    • [JSON]
      • hints.json
    • page.html中

現在,當我啓動我的page.html我有一個按鈕,當我點擊將要加載我的hints.json文件。 這是我加載json的腳本。

$(function(){ 

    var jsonURL = "json/hints.json"; 
    var butt = $('.button .hints li'); 
    butt.find('a').click(function(evt){ 

    $.getJSON(jsonURL, function(value){ 
     console.log(" title = ", value.intro[0].title); 
    }); 



    }); 

}); 

Json文件結構。

{ 
    "intro": [ 
       {"title": "title text", "copy": "copy text1"}, 
       {"title": "title text", "copy": "copy text1"} 
      ], 
    "active":[ 
       {"title": "Title text for page active", "copy": "copy text"} 
      ] 
} 

有誰能告訴我爲什麼這不起作用。

更新:這已經過本地測試,而不是從服務器進行測試。

這是一個jsfiddle的例子,即使我試圖讓它在本地工作。 http://jsfiddle.net/r3bPC/1/

+0

你有任何錯誤? –

+0

你有沒有錯過JSON的類型,或者真的發送給你的是什麼?如果是這樣,那就錯了。 – Joe

+0

使用Firefox + Firebug,打開NET選項卡並查看您的AJAX請求。你會看到響應或404錯誤。 –

回答

3

Json文件結構。

{ 
    "intro": [ 
       {"title": "title text", "copy": "copy text1"}, 
       {"title": "title text", "copy": "copy text1"} 
      ], 
    "active":[ 
       {"title": Title text for page active, "copy": "copy text"} 
      ] 
} 

轉儲到http://jsonlint.com/ ....

Parse error on line 14: 
...   "title": Titletextforpageacti 
-----------------------^ 
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[' 

那麼有你的問題。

第2部分

搶JS:

$(function(){ 

    var jsonURL = "json/hints.json"; 
    butt.find('a').click(function(evt){ 

    $.getJSON(jsonURL, function(json){ 
     // $("#title").text(json.name); 
     console.log(" title = ", json.intro[0].title); 
    }); 

}); 

運行它通過http://jshint.com/ ...

Errors: 

Line 4 butt.find('a').click(function(evt){ 
'butt' is not defined. 
Line 1$(function(){ 
Unmatched '{'. 
Line 11}); 
Expected ')' and instead saw ''. 
Line 11}); 
Missing semicolon. 

那麼有你的其他問題。

ps,undefined butts嚇我。

+0

以下看到答案感謝隱身我修正了json字符串,至於未定義的屁股。它只是沒有顯示對接變量,當我做一個consoloe.log時,它顯示按鈕事件工作,它的$ .getJSON不加載,我更新了我的代碼以顯示對接是什麼。var butt = $('。button a '); – Chapsterj

+0

當我在jshint中運行我的代碼時,它正確地傳遞了。所以我知道它的$ .getJSON(jsonURL,function(json){ 這是因爲某些原因沒有得到執行。 – Chapsterj

+0

請注意jshint告訴你什麼。你還沒有關閉一些東西,把你所有的括號匹配起來。JS Hint告訴你它是什麼。 – Incognito

0

完整嘗試和測試代碼,

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(function(){  
$.ajax({ 
type:'GET', 
url:'hints.json', 
dataType:'json', 
success:function(json){ 
alert(json.intro[0].title); //this alerts title text 
}, 
error:function(){ 
alert("dssdsdd"); 
} 
}); 


}); 

</script> 

$.getJSON("hints.json", function(json){ 

     alert(json.intro[0].title); 
    }); 

hints.json

{ 
    "intro": [ 
       {"title": "title text", "copy": "copy text1"}, 
       {"title": "title text", "copy": "copy text1"} 
      ], 
    "active":[ 
       {"title": "Title text for page active", "copy": "copy text"} 
      ] 
} 

getJSON success callback

var jqxhr = $.getJSON("hints.json", function() { 
    alert("success"); 
    alert(json.intro[0].title); 
}) 
.success(function() { alert("second success"); }) 
.error(function() { alert("error"); }) 
.complete(function() { alert("complete"); }); 
+0

爲什麼它不能使用$ .getJSON()。爲什麼我要在不調用ajax時使用$ .ajax()調用? – Chapsterj

+0

它與'getJSON'一起工作! – Rafay

+0

好吧,但它不適合我:)我很抱歉,但我的沮喪程度是現在這種代碼有點高。如果我看起來很短,那很抱歉。所以你甚至嘗試過,就像我有這樣的路徑:json/hints.json使用按鈕單擊像我已經在我的jsfiddle示例中設置和我的本地示例 – Chapsterj