2011-07-15 81 views
27

我的劇本目前看起來是這樣的:如何從JavaScript文件中讀取javascript?

<script type="text/javascript"> 
    function updateMe(){ 
    var x = 0; 
    var jsonstr = '{"date":"July 4th", "event":"Independence Day"}'; 
    var activity=JSON.parse(jsonstr); 
    while(x<10){ 
    date = document.getElementById("date"+x).innerHTML = activity.date; 
    event = document.getElementById("event"+x).innerHTML = activity.event; 
    x++; 
    } 
    } 
</script> 

凡日期「x」和事件「X」是一系列的HTML標籤。該函數在頁面加載(onload)時運行。我的目標是完成同樣的事情,只能從本地.json文件中完成,而不是上面的硬代碼。我已經檢出http://api.jquery.com/jQuery.getJSON/

本地上傳.json文件看起來是這樣的:

{"date":"July 4th", "event":"Independence Day"} 

有什麼建議?

+1

如果你的意思是「一個文件系統上的JSON文件」,或「託管的Web服務器上的JSON文件」你能澄清一下。 – ironchefpython

+0

對不起....這是一個文件系統上的json文件,存儲在與html頁面相同的文件夾中。 – MTP

+0

然後我給出的答案,使用jsonp格式的文件,就是你要找的。當您的問題得到滿意答覆時,請不要忘記標記答案。 – ironchefpython

回答

29

假設你的意思是「文件在本地文件系統」,當你說.json文件。

您需要保存格式化爲jsonp的json數據,並使用file:// url來訪問它。

你的HTML看起來像這樣:

<script src="file://c:\\data\\activity.jsonp"></script> 
<script type="text/javascript"> 
    function updateMe(){ 
    var x = 0; 
    var activity=jsonstr; 
    foreach (i in activity) { 
     date = document.getElementById(i.date).innerHTML = activity.date; 
     event = document.getElementById(i.event).innerHTML = activity.event; 
    } 
    } 
</script> 

和文件C:\ DATA \ activity.jsonp包含以下行:

jsonstr = [ {"date":"July 4th", "event":"Independence Day"} ]; 
+0

謝謝...這非常有幫助。不過,我還不確定如何訪問JSONP的各個元素。我可以將所有'活動'打印出來,但如果我嘗試使用activity.date,那麼它會尖叫'未定義'。任何想法爲什麼?我目前使用alert()進行測試。 – MTP

+0

您可以在原始問題下方添加編輯以顯示您正在使用的JSONP文件的內容? – ironchefpython

+0

您的.jsonp文件的路徑將失敗 - 反斜槓將被視爲轉義,我懷疑用戶的驅動器上有「c:dataactivity.jsonp」。文件網址使用正斜槓。 –

2

你可以不喜歡它... 只要給您的JSON文件的正確的路徑...

<!doctype html> 
<html> 
    <head> 
     <script type="text/javascript" src="abc.json"></script> 
      <script type="text/javascript" > 
       function load() { 
        var mydata = JSON.parse(data); 
        alert(mydata.length); 

        var div = document.getElementById('data'); 

        for(var i = 0;i < mydata.length; i++) 
        { 
         div.innerHTML = div.innerHTML + "<p class='inner' id="+i+">"+ mydata[i].name +"</p>" + "<br>"; 
        } 
       } 
     </script> 
    </head> 
    <body onload="load()"> 
    <div id= "data"> 

    </div> 
    </body> 
</html> 

只需獲取數據並將其附加到div ...最初在警報中打印長度。

這裏是我的JSON文件:abc.json

data = '[{"name" : "Riyaz"},{"name" : "Javed"},{"name" : "Arun"},{"name" : "Sunil"},{"name" : "Rahul"},{"name" : "Anita"}]';