ASP 影响中的服务器端 JS
Server-Side JS in ASP implications
我试图在经典-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()
由于未返回日期类型的字符串而导致内部服务器错误。只是returns个数,toDateString()
不支持!有什么方法可以在 ASP 中调试 JavaScript 吗?
P.S。我已经在服务器管理器 (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
格式。(我不确定这是否是它接受的唯一格式,您可以尝试不同的变体)
<%@ 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>
我试图在经典-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()
由于未返回日期类型的字符串而导致内部服务器错误。只是returns个数,toDateString()
不支持!有什么方法可以在 ASP 中调试 JavaScript 吗?
P.S。我已经在服务器管理器 (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
格式。(我不确定这是否是它接受的唯一格式,您可以尝试不同的变体)
<%@ 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>