ASP中的服务器端JS含义

时间:2016-04-09 16:46:54

标签: javascript asp-classic global-variables environment-variables server-side

我试图在经典ASP网站中使用JavaScript作为脚本语言。 我遇到了几个错误。许多JS对象不起作用,也有一些常量。有人可以解释使用JavaScript作为服务器端脚本语言的含义。这是我第一次尝试使用JavaScript的asp网站,所以我提供了这段代码。

<%
var user = Request.QueryString("name");
Response.Cookies("thisUser") = user;

var expdate = new Date(Date.now().setMinutes(Date.now().getMinutes()+5));
Response.Cookies("thisUser").Expires = expdate.toString();

function _greet(name) {
    Response.Write("<p>And also you... <b>" + name + "</b> ...I guess...</p>");
}

%>
<!doctype html>
<html>
<head><title>ASP</title></head>
<body>
<%
Response.Write("<p>Hello World!</p>");
if (user != undefined) {
    _greet(user);
}
%>
</body>
</html>
无论_greet()是否未定义,

user始终运行。由于未返回日期类型字符串,expdate.toString()会导致内部服务器错误。它只返回数字,不支持toDateString()!有没有办法在ASP中调试JavaScript?

P.S。我已经在服务器管理器(IIS 8.5)中将默认语言设置为JavaScript。此外,我只是作为内部网站进行测试。

1 个答案:

答案 0 :(得分:0)

首先,变量user永远不会在if块中未定义,因为您在此处定义它:

var user = Request.QueryString("name");

它可能为null或空字符串,但未定义。所以只需执行此类检查:

if ((user + "").length > 0) {
    _greet(user);
}

这将检查长度,只有当某些东西出现时才会执行该功能。

其次,Cookie实例的.Expires属性应该是一个日期,而不是字符串。只需删除.toString()电话就可以了:

Response.Cookies("thisUser").Expires = expdate;