Javascript ASP中的服务器端JS

Javascript ASP中的服务器端JS,javascript,asp-classic,global-variables,environment-variables,server-side,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.no

我试图在一个经典的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>

ASP
\u greet()
始终运行,无论
用户
是否未定义
expdate.toString()
由于未返回日期类型的字符串而导致内部服务器错误。它只返回数字,不支持
toDateString()!有没有办法在ASP中调试JavaScript


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

首先,变量
user
将永远不会在
if
块中未定义,因为您在这里定义了它:

var user = Request.QueryString("name");
它可能是null或空字符串,但不是未定义的。因此,只需执行这样的检查即可:

if ((user + "").length > 0) {
    _greet(user);
}
这将检查长度,并且只有在存在某些内容时才会执行该函数


其次,Cookie实例的
.Expires
属性无论如何都应该获取日期,而不是字符串。只需删除
.toString()
调用,它就可以工作了:

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

如果要检查cookie是否已设置,则必须读取cookie并检查它是否真的在设置的5分钟内过期

.Expires
设置似乎希望日期格式为
yyyy-MM-dd H:m
格式。(我不确定这是否是它接受的唯一格式,您可以尝试不同的变体)


ASP

我在其他网页上看到了我的问题。也许我错过了一些配置。我第一次尝试了,但没有成功。我还尝试了使用
toDateString()
ToutString()
进行格式化,但这些都不起作用。为什么
未定义的
无法识别?而且当我在浏览器控制台上查看过期日期时,它是以GMT为单位的。这正常吗?但这是脚本中的系统区域设置时间。
<%@ Language= "JavaScript" %> 
<%

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

//set the cookie only if it is not undefined
if(user+"" != "undefined")
{
    //write the name to cookie
    Response.Cookies("thisUser") = user;

    var fiveMinutesLater = new Date();
    fiveMinutesLater.setMinutes(fiveMinutesLater.getMinutes() + 5);

    //Response.Cookies("thisUser").Expires seems to expect the date in yyyy-MM-dd H:m format
    var formatteddate= fiveMinutesLater.getFullYear()+ "-" +("0" + (fiveMinutesLater.getMonth()+ 1)).slice(-2)+ "-" + ("0" + fiveMinutesLater.getDate()).slice(-2)+ " " + ("0" + fiveMinutesLater.getHours()).slice(-2)+":"+("0" + fiveMinutesLater.getMinutes()).slice(-2)

    Response.Cookies("thisUser").Expires = formatteddate;   
}


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>");

//Read the cookie.
var thisUser = Request.Cookies("thisUser");

if (thisUser != "") {
    _greet(thisUser);
}
%>
</body>
</html>