如何在CGI中访问Javascript变量

时间:2009-06-10 14:37:09

标签: javascript cgi

如何访问Javascript全局变量到CGI程序谢谢, Chells

3 个答案:

答案 0 :(得分:2)

cgi prog在服务器上运行,你的javascript在浏览器中,对吗? 也许您应该通过URL(GET)或HTTP Post?

将变量传递给服务器

答案 1 :(得分:2)

三种方式:POST,GET或cookies。你使用的取决于你的情况。

POST:在页面上包含一个带有两个隐藏字段的表单。当事件发生时,用JS变量填充隐藏字段并将表单提交给cgi程序。

GET:让JS将变量添加到URL上。当用户单击链接时,它会激活JS功能。 JS函数将浏览器发送到“cgi-prog.cgi?JSvar1 = foo& JSvar2 = bar”

cookies:一旦确定了变量,JS就会在用户的机器上设置一个cookie。 Perl读取cookie以获取变量。

答案 2 :(得分:2)

其他人建议的方法,如HTTP GET,POST,查询字符串,隐藏表单字段和cookie都非常好。但是为了获得更多的技巧和交互性,请考虑使用AJAX。

我们有一个Web应用程序,而不是在浏览器端使用Javascript,当点击某些内容时,它会通过AJAX将一些数据发送到服务器端脚本。这与你正在做的相似吗?如果是这样,那么AJAX就是最佳选择。

以下示例使用GET将内容发送回Perl CGI脚本(位于'url'):

var request =  new XMLHttpRequest();
request.open("GET", url, false);
request.send(null);

if(!request.getResponseHeader("Date")) {
var cached = request;
request =  new XMLHttpRequest();
var ifModifiedSince = cached.getResponseHeader("Last-Modified");
ifModifiedSince = (ifModifiedSince) ?
      ifModifiedSince : new Date(0); // January 1, 1970
  request.open("GET", url, false);
  request.setRequestHeader("If-Modified-Since", ifModifiedSince);
  request.send("");
  if(request.status == 304) {
    request = cached;
  }
}

当然,不要自己写这些东西。这只是为了说明发生了什么。总是使用一个好的Javascript库来完成AJAX的工作。那里有很多好的: List of modern AJAX Libraries and Frameworks