Javascript FastCGI 服务的页面上的未定义函数
Javascript undefined function on a page served by FastCGI
我有一个简单的 HTML 表单,由嵌入式 javascript 函数处理,在本地进行所有计算。
<!DOCTYPE html>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
</head>
<body style="background-color:#ffccee;">
<form>
<input id="firstThing"> <br><br>
<button type="button" onclick="return doThings();">click me</button><br><br>
</form>
<script>
function doThings(){...}
</script>
</body></html>
一旦我通过 Nginx 使用 FastCGI 为页面提供服务,按钮的点击操作就会失效。
Uncaught ReferenceError: doThings is not defined
onclick https://page.com/app.o:1
很明显该页面正在尝试联系我的 CGI 应用程序,但我的目的是让按钮指向 运行 嵌入的 javascript。
我必须更改什么设置?
# NGINX config
http {
include mime.types;
default_type application/octet-stream;
charset utf-8;
sendfile on;
server {
listen 443 ssl;
server_name page.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
#some fastcgi_param removed...
if ($uri !~ "^/assets/") {
fastcgi_pass 127.0.0.1:1234;
}
}
}
}
将 html 中的 javascript 函数移动到其自己的文件中(本例中为 assets/script.js)。
更改 html 中的脚本标记以反映更改:
<script type="text/javascript" src="assets/script.js"></script>
html 中的实际脚本路径将取决于您的 Nginx 配置。
由于我的服务器设置为绕过 CGI 并按原样提供资产文件夹的内容,我们到这里就完成了。
我的按钮现在可以正常工作了。 onclick 操作由 javascript 源而不是 CGI 处理。
我有一个简单的 HTML 表单,由嵌入式 javascript 函数处理,在本地进行所有计算。
<!DOCTYPE html>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
</head>
<body style="background-color:#ffccee;">
<form>
<input id="firstThing"> <br><br>
<button type="button" onclick="return doThings();">click me</button><br><br>
</form>
<script>
function doThings(){...}
</script>
</body></html>
一旦我通过 Nginx 使用 FastCGI 为页面提供服务,按钮的点击操作就会失效。
Uncaught ReferenceError: doThings is not defined
onclick https://page.com/app.o:1
很明显该页面正在尝试联系我的 CGI 应用程序,但我的目的是让按钮指向 运行 嵌入的 javascript。 我必须更改什么设置?
# NGINX config
http {
include mime.types;
default_type application/octet-stream;
charset utf-8;
sendfile on;
server {
listen 443 ssl;
server_name page.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
#some fastcgi_param removed...
if ($uri !~ "^/assets/") {
fastcgi_pass 127.0.0.1:1234;
}
}
}
}
将 html 中的 javascript 函数移动到其自己的文件中(本例中为 assets/script.js)。
更改 html 中的脚本标记以反映更改:
<script type="text/javascript" src="assets/script.js"></script>
html 中的实际脚本路径将取决于您的 Nginx 配置。 由于我的服务器设置为绕过 CGI 并按原样提供资产文件夹的内容,我们到这里就完成了。
我的按钮现在可以正常工作了。 onclick 操作由 javascript 源而不是 CGI 处理。