2011-07-11 90 views
0

我正在使用適用於Python的Google App Engine SDK。當我寫的JavaScript函數在一個單獨的.js文件並將其包含在.py文件,我得到在Chrome以下錯誤: -javascript函數未定義錯誤

在.py文件: -
未捕獲引用錯誤:initFunc不定義。

在.js文件: -
未捕獲的語法錯誤:意外的令牌<
資源解釋爲腳本,但使用MIME類型text/html轉移。

源碼: -
.py文件

print 'Content-Type: text/html' 
print '' 
print '\ 
<head>\ 
    <title>Page</title>\ 
    <script type="text/javascript" src="script.js">\ 
    </script>\ 
</head>\ 
<body>\ 
<input type="button" onclick="initFunc();" value="Test" />\ 
</body>\ 
' 

js文件
function initFunc(){alert("hi");}\

所有錯誤消失的時候我將initFunc包含在.py文件中。

+2

打印語法錯誤;在多行字符串的第一行需要三重引號或'\'。你在Python代碼中也有一個沒有引號的'
',除非這是爲你的代碼格式化而不是在你的代碼中。無論如何,你幾乎肯定希望使用WSGI框架和模板系統,而​​不是「打印」HTTP頭和原始HTML。 – geoffspear

+0

我在我的代碼中有\。
不是我的代碼的一部分。在嘗試在此處設置代碼格式時將其弄糊塗。在上面的代碼中更正了這兩個拼寫錯誤。 – haltTm

+0

你能幫我調試一下上面寫的代碼嗎? :) – haltTm

回答

1

我的猜測是,你有main.pyfoo.js在同一個根目錄。
你應該映射路線爲您的項目像在app.yaml配置文件中的JavaScript靜態內容:

1.創建一個目錄在您的項目

2.增加了JavaScript的靜態部分的根稱爲static/javascriptsapp.yaml處理

-url: /javascripts 
    static_dir: app/static/javascripts 

3.修改你的代碼是這樣的:

print 'Content-Type: text/html' 
print '' 
print """ 
<head> 
    <title>Page</title> 
    <script type="text/javascript" src="/javascripts/script.js"> 
    </script> 
</head> 
<body> 
<input type="button" onclick="initFunc();" value="Test" /> 
</body> 
""" 

正如Wooble正確建議的那樣,您應該避免使用print進行編碼,並切換到GAE支持的更加花哨的Python web-frameworks