初学ASP啊,但今天遇到一个很郁闷的问题,代码如下:
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
<title>欢迎</title>
</head><body>
<%
var userID=Request.Form("userID");
var passwd=Request.Form("passwd");if(userID===undefined || passwd===undefined)
{
Response.Redirect("demo.html");
}else
{
Response.Write("欢迎您 "+userID);
Response.Write("您的密码是:"+passwd);
}
%>
</body>
</html>在这里,为什么浏览器中现实的是欢迎您 undefined您的密码是:undefined 这究竟是为什么呢?
这里userID究竟是undefined还是null还是其他什么?
如果不是 undefined 那么为什么打出来的是,如果是,为什么if语句里面进不去 !!!
郁卒啊,找了好多资料,但这个问题还是不懂 !!!求解答啊各位大大们~~~
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
<title>欢迎</title>
</head><body>
<%
var userID=Request.Form("userID");
var passwd=Request.Form("passwd");if(userID===undefined || passwd===undefined)
{
Response.Redirect("demo.html");
}else
{
Response.Write("欢迎您 "+userID);
Response.Write("您的密码是:"+passwd);
}
%>
</body>
</html>在这里,为什么浏览器中现实的是欢迎您 undefined您的密码是:undefined 这究竟是为什么呢?
这里userID究竟是undefined还是null还是其他什么?
如果不是 undefined 那么为什么打出来的是,如果是,为什么if语句里面进不去 !!!
郁卒啊,找了好多资料,但这个问题还是不懂 !!!求解答啊各位大大们~~~
<%
var userID=Request.Form("userID");
var passwd=Request.Form("passwd");
//当你不确定究竟是undefined还是null还是其他什么的时候,不妨把你怀疑的几种情况输出来看看:
Response.Write((userID==undefined)+"<br>");
Response.Write((userID==null)+"<br>");
Response.Write((userID=='')+"<br>");
Response.End();if(userID===undefined || passwd===undefined)
{
Response.Redirect("demo.html");
}else
{
Response.Write("欢迎您 "+userID);
Response.Write("您的密码是:"+passwd);
}
%>
谢谢,今早爬起来再看了下<%
var userID=Request.Form("userID");
var passwd=Request.Form("passwd");Response.Write(userID=="undefined");
Response.Write("<br>");
Response.Write("为什么会这样子?");
Response.Write("<br>");
Response.Write(userID==undefined);
Response.Write("<br>");
Response.Write("为什么会这样子?");
Response.Write("<br>");
Response.Write(userID===undefined);
Response.Write("<br>");
Response.Write("为什么会这样子?");
Response.Write("<br>");
Response.Write(userID==null);
Response.Write("<br>");
Response.Write("为什么会这样子?");
Response.Write("<br>");
Response.Write(userID=='');
Response.Write("<br>");
Response.Write("为什么会这样子?");
Response.Write("<br>");
Response.Write("欢迎您 "+userID);
Response.Write("您的密码是:"+passwd);Response.End();
%>
结果如下啊:
False
为什么会这样子?
False
为什么会这样子?
False
为什么会这样子?
False
为什么会这样子?
False
为什么会这样子?
欢迎您 undefined您的密码是:undefined
var passwd=Request.Form("passwd");
先输出参数:
Response.Write(userID+"<br>");
Response.Write(passwd+"<br>");
//当你不确定究竟是undefined还是null还是其他什么的时候,不妨把你怀疑的几种情况输出来看看:
Response.Write((userID==undefined)+"<br>");
Response.Write((userID==null)+"<br>");
Response.Write((userID=='')+"<br>");
Response.End();
false == null == 0 ==undefined == '' 都是true
如果一定要判断类型 用 ===
另外 javascript里面所有对象中不存在或者没有定义的属性,或者var声明了但是没有赋值的变量 值都是undefined。
比如
var obj = new Object();
Response.Write(obj.sfsdjlfkjslkaf); // 是undefined
而不存在的对象(即object)是null(typeof null 是object)
var passwd=Request.Form("passwd");if(userID.Count==0 || passwd.Count==0) {
Response.Redirect("demo.html");
} else {
Response.Write("欢迎您 "+userID);
Response.Write("您的密码是:"+passwd);
}不管是否有 userID 参数传入, Request.From("userID") 都不会是 undefined, 也不是 null它是一个 StringList.
---------------------------------
取其 Item 属性的值才是字符串类型
var strUserID = Request.Form("userID").Item;
var strPasswd=Request.Form("passwd").Item;if(strUserID.Count===undefined || strPasswd===undefined) {
Response.Redirect("demo.html");
} else {
Response.Write("欢迎您 "+userID);
Response.Write("您的密码是:"+passwd);
}
谢谢指点。我换了以下代码:%
var strUserID = Request.Form("userID").Item;
var strPasswd=Request.Form("passwd").Item;
Response.Write("欢迎您 "+strUserID);
Response.Write("您的密码是:"+strPasswd);Response.End();
%>显示的是
欢迎您 undefined您的密码是:undefined为什么这里还是undefined呢?
var strUserID = Request.Form("userID").Item;
var strPasswd=Request.Form("passwd").Item;// 当有传入参数 userID 时, 使用 Request.Form("userID").Item, 会得到字符串值
// 没有传入参数 userID 时, 使用 Request.Form("userID").Item, 会得到 undefined// 这时候 strUserID 是真正的 undefined
// 你可以通过 Request.Form("userID").Item == undefined 进行比较
// 你却无法通过 Request.Form("userID") == undefined 进行比较, 因为 Request.Form('...') 永远不会是 undefinedResponse.Write("欢迎您 "+strUserID);
Response.Write("您的密码是:"+strPasswd);Response.End();
// 如果想在没有传入参数时,取得空串,可以这么写var strUserID = Request.Form('userID').Item || '';
if (strUserID == '') {
Response.Write("User ID 为空");
} else {
Response.Write("User ID: " + strUserID);
}
var strUserID=Request.QueryString("userID");
var strPasswd=Request.QueryString("passwd");
if(strUserID=="undefined")
{
Response.Write("Hello!");
}
Response.Write("欢迎您 "+strUserID);
Response.Write("您的密码是:"+strPasswd);Response.End();
%>
不管怎么换,这里的strUserID什么都不是 !!!不管是和undefined,还是"undefined",还是"",还是null
都不是 !!!
上面都说了var theParam = Request.Form("paramName"); // QueryString 也一样接收参数后, theParam 是一个 StringList (字符串列表,类似于集合)可以判断其 Count 属性或者 Item 属性if (theParam.Count === 0) {
// ...
}if (theParam.Item === undefined) {
// ...
}