2017-06-02 110 views
0

我應該讀取一個Python數據結構,一個精確到JavaScript函數的2d列表。我知道這可以在將python數據結構轉換爲json對象然後使用Javascript函數讀取json對象之後完成。我正在使用Python腳本呈現html頁面,如下所示。使用Python和Javascript從Json文件讀取和寫入

import webbrowser, json 
f = open('World.html', 'w') 
arr = [[]] 
arr[0].append('Hello') 
arr[0].append('There') 
arr.append([]) 
arr[1].append('Good') 
arr[1].append('Morning') 
arr[1].append('!') 
message = '''<html><head><script type="text/javascript" src="outputjson.json"></script><script>function Hello(){alert(outputjson.arr);}</script></head><body><h1>This is not working and you know it</h1><input value="Click Bro" type="button" onclick="Hello();"></input></body></html>''' 
f.write(message) 
with open('outputjson.json', 'w') as f: 
     json.dump(arr, f) 

f.close() 
webbrowser.open_new_tab('World.html') 

Outputjson.json是這個樣子: [ 「!」[ 「你好」, 「有」],[ 「好」, 「早上好」,]]

JSON對象會成功創建,但我無法通過我的JavaScript函數讀取它。我哪裏錯了? 我有一個約束,我不能去BeautifulSoup。 在此先感謝。

+0

任何錯誤信息? –

+0

不,我不能看到任何警報消息。如果我明顯硬編碼,警報消息將起作用。 –

+0

你不能像這樣加載json。 json將被評估爲js,並且它將不可用 – karthick

回答

0

你不能簡單地加載json文件到瀏覽器中。一種方法是向JSON文件發出XHR請求並加載它。另一種方法是將您的json轉換爲jsonp結構。

jsonp_structure = "hello(" + json.dumps(arr) + ")" 
f.write(jsonp_structure) 

隨着上述變化您的hello JavaScript函數將被調用與JSON。您可以選擇存儲JSON以進一步訪問/處理。

+0

請參閱此答案爲jsonp:https://stackoverflow.com/questions/3839966/can-anyone-explain-what-jsonp-is-in-layman-terms –

+0

嘿謝謝你的建議,它與一個小的改變。 jsonp_strucutre =「hello =(」+ json.dumps(arr)+「)」 –