2011-07-11 105 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