2014-01-28 33 views
1

我有一個Python程序,生成報告結果的HTML頁面。這個html頁面被保存在磁盤上的一個輸出目錄中,旁邊還有一個javascript文件,可以幫助進行動態表格處理。我還將一個JSON文件保存到這個輸出目錄,我想用我的JavaScript文件讀入。這個JSON文件包含我希望能夠訪問的Python運行(保存的字典)中的數據。因此,在磁盤上的輸出目錄,我有:如何使用Javascript訪問本地JSON文件?

  • C:/somedirectory/output/report.html
  • C:/somedirectory/output/tables.js
  • C:/ somedirectory /輸出/數據.json

所有文件都是從我的程序中創建的。

我的html頁面有一個帶複選框的表格,如果選中了這些複選框,我想根據保存在JSON文件中的數據更新第二個表格。因此,我想在任何瀏覽器中打開我的html報告,並將JSON文件讀爲javascript對象。

我一直在嘗試使用Ajax和.getJSON但我得到

否「訪問控制允許來源」標頭出現在所請求的資源。因此不允許原產地'null'訪問。

我已經搜索並看到許多類似的問題,但沒有遇到任何相當符合我需要的東西。想法和解決方法將不勝感激。謝謝。

更新

因爲一切都是在客戶端上我已經決定直接嵌入JSON數據(Python字典)和JavaScript代碼到HTML報表輸出本地運行。這樣數據可以在內部訪問,並且可以傳遞html文件而不存在相關性問題。具有我在下面選擇的答案的用戶有一個無法解決此問題的鏈接。

+2

你是從一個實際的服務器,或只是在本地計算機上運行這個HTML? – mjkaufer

+2

聽起來就像你在本地訪問JSON一樣,這會導致來自[相同來源策略]的問題(http://en.wikipedia.org/wiki/Same-origin_policy)。爲了解決這個問題,請使用[jsonp](http://en.wikipedia.org/wiki/JSONP)。你需要在你的ajax調用中指定這個,聲明dataType:「jsonp」 –

+0

@mjkaufer沒有任何東西從實際的服務器上運行,這些文件對於計算機來說是本地的。用戶的想法是安裝一個桌面python程序,運行該程序,並可以提取一個格式良好的html結果報告。 – Doug

回答

1

JavaScript在客戶機上運行,​​因此它只能使用特殊設置訪問客戶機上的文件。

如果你想讓它閱讀 JSON在服務器上,你應該使用路徑:

http://example.com/output/data.json 

更好辦法是閱讀的Python /寫JSON文件,然後發送表格數據以JavaScript的身份在這個答案:Send data from Python to Javascript (JSON)

+1

我最終採用了您在鏈接中指向的類似方法。目前我的答案是將所有內容嵌入html頁面,包括javascript和json數據。然後可以傳遞html文件而不需要依賴關係。謝謝! – Doug