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>
无论user
是否未定义,_greet()
始终运行。expdate.toString()
由于未返回日期类型的字符串而导致内部服务器错误。它只是返回数字,不支持toDateString()
!有什么方法可以调试ASP中的JavaScript吗?
附言:我已经在服务器管理器(IIS 8.5)中将默认语言设置为JavaScript。此外,我只是作为一个intranet站点进行测试。
如果您要检查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>
首先,变量user
在if
块中永远不会被定义,因为您在这里定义了它:
var user = Request.QueryString("name");
它可能是null或空字符串,但不是未定义的。所以只需要执行这样的检查:
if ((user + "").length > 0) {
_greet(user);
}
这将检查长度,只有当有东西时才会执行函数。
其次,Cookie实例的.Expires
属性无论如何都应该得到一个日期,而不是字符串。只需删除.toString()
调用,它就可以工作:
Response.Cookies("thisUser").Expires = expdate;
相关文章:
- renderReact/Rect Router+Node/Express.js的服务器端/同构渲染中未定义renderP
- 挖空.js - 向服务器端发送的数据添加属性
- dust.js是随机用户上传的模板,可以安全地在服务器端执行
- Node.JS:从服务器端内存服务文件与服务器端文件
- AJAX 将数据从客户端(JS)发送到服务器(PHP)
- 如何在node.js中将数组从服务器端传输到客户端
- 如何使用angular js在表单上显示服务器端验证错误消息
- '<'在服务器端node.js中使用reactJS时无法识别
- ASP含义中的服务器端JS
- 从服务器端获取一个数组,以便稍后与JS一起使用
- 将服务器端渲染的元素添加为Vue js父级的子级
- 如何从服务器端强制刷新客户端js
- three.js服务器端冲突检测错误
- Node.js Express应用程序:如果存在cookie,则从服务器端向元素添加CSS类
- 如何在服务器端执行 JS
- IntelliJ的服务器端JS覆盖范围
- 服务器端js(node.js)上的同步
- 如何运行服务器端JS
- 部分垃圾收集对象可能吗?(服务器端JS)
- 在express.js / node.js中包含headers +自定义服务器端.js的正确方法