【问题标题】:javascript function not defined errorjavascript函数未定义错误
【发布时间】:2011-07-11 12:46:25
【问题描述】:

我正在使用适用于 Python 的 Google App Engine SDK。当我在单独的 .js 文件中编写 Javascript 函数并将其包含在 .py 文件中时,我在 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");}\

当我在 .py 文件本身中包含 initFunc 时,所有错误都会消失。

【问题讨论】:

  • 您的打印语法错误;您需要在多行字符串的第一行使用三引号或 \ 。您在 python 代码中也有一个未引用的&lt;br&gt;,除非这是试图为 SO 格式化您的代码而不是实际上在您的代码中。无论如何,您几乎肯定想要使用 WSGI 框架和模板系统,而​​不是 printing HTTP 标头和原始 HTML。
  • 我的代码中有\。
    不是我的代码的一部分。尝试在此处格式化代码时搞砸了。更正了上面代码中的这两个错别字。
  • 你能帮我调试一下上面写的代码吗? :)
  • app.yaml 是什么样的?您实际上是在提供 .js 文件以响应对它的请求,还是在日志中看到 404?

标签: javascript python google-app-engine


【解决方案1】:

我的猜测是您在同一个根目录中同时拥有 main.pyfoo.js
您应该在 app.yaml 配置文件中为您的项目的静态内容(如 javascripts)映射一个路由:

1.在项目的根目录下创建一个名为static/javascripts的目录

2.在 app.yaml 处理程序中添加 javascripts 静态部分

 -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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2020-11-07
    • 2015-02-24
    • 1970-01-01
    • 2017-06-29
    • 2015-07-06
    • 1970-01-01
    相关资源
    最近更新 更多