JavaScript函数未定义错误

0 投票
1 回答
2092 浏览
提问于 2025-04-16 21:15

我正在使用Google App Engine的Python开发工具。当我在一个单独的.js文件中写JavaScript函数,并在.py文件中引入这个.js文件时,Chrome浏览器报了以下错误:

在.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文件里时,所有错误都消失了。

1 个回答

1

我猜你的项目里有两个文件,main.pyfoo.js,它们都在同一个根目录下。
你应该在 app.yaml 配置文件中为项目的静态内容,比如 JavaScript,设置一个路径。

1. 在你的项目根目录下创建一个叫 static/javascripts 的文件夹。

2. 在你的 app.yaml 的处理程序中添加 JavaScript 的静态部分。

 -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,而是切换到更高级的Python 网络框架,这些框架是 GAE 支持的。

撰写回答