470,626 Members | 2,116 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,626 developers. It's quick & easy.

JavaScript typeof checking a Request value

Hi All!

I have the following code in an asp page whose language tag is:
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>

// Find request variables.
var edition = Request.Form ("edition");
var language = Request.Form ("language");
Response.Write("Edition is type &quot;" + (typeof edition) + "&quot; and
value &quot;" + edition + "&quot;<br>");
Response.Write("Language is type &quot;" + (typeof language) + "&quot;
and value &quot;" + language + "&quot;<br>");

if (edition == "undefined" ||
(typeof edition) == "undefined")
{
Response.Write("Choose Page<br>");
Server.Execute ("choosePage.asp");
} // end if
else
{
Response.Write("View Page<br>");
Server.Execute ("viewPage.asp");
} // end else

The problem is this is what I see:

Edition is type "object" and value "undefined"
Language is type "object" and value "undefined"
View Page
There is nothing in choosePage.asp or viewPage.asp yet, but I am unable to
figure out why the else is triggering and not the if - my print out of the
edition var shows it has a value of "undefined"...

Any help would be most appreciated!

Rob
:)
Jul 19 '05 #1
8 9892
"Robert Mark Bram" <re********@removethis.optushome.com.au> writes:
Response.Write("Edition is type &quot;" + (typeof edition) + "&quot; and
value &quot;" + edition + "&quot;<br>"); .... if (edition == "undefined" ||
(typeof edition) == "undefined") .... Edition is type "object" and value "undefined"
So, edition is an *object*, and when it is converted to a string, it
becomes the string "undefined". I.e., edition.toString() == "undefined".

You then test whether edition=="undefined" . It isn't, since it is an
object, not a string, and objects are only equal to themselves.

Likewise, (typeof edition)=="undefined" fails since (typeof
edition)=="object".
but I am unable to figure out why the else is triggering and not the
if - my print out of the edition var shows it has a value of
"undefined"...


No, its value is an object, which is neither the value "undefined" or
the string "undefined". That object has a method called toString that
returns the string "undefined".

/L
--
Lasse Reichstein Nielsen - lr*@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'
Jul 19 '05 #2
> I have the following code in an asp page whose language tag is:
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>

// Find request variables.
var edition = Request.Form ("edition");
var language = Request.Form ("language");
I think you probably want the String value stored in the Request.Form.Item
object, not the object itself.
Try
var edition = String (Request.Form ("edition")),
language = String (Request.Form ("language"));

The variables should now contain either the string value from the form
field, or the string "undefined".

I hope this helps. I don't often see server-side JScript questions here,
most people seem to think that if it's ASP then it must be VBS.

MightyC

PS. I hope your user never types in "undefined" as a value!
Response.Write("Edition is type &quot;" + (typeof edition) + "&quot; and...(snipped)

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.520 / Virus Database: 318 - Release Date: 18/09/03
Jul 19 '05 #3
Hi MightyC! :)

Thanks for the response!
var edition = String (Request.Form ("edition")),
language = String (Request.Form ("language"));
OK, well this gets out the values as Strings..
I hope this helps. I don't often see server-side JScript questions here,
most people seem to think that if it's ASP then it must be VBS.
I spent a lot of time learning Javascript - I want to keep using it!
PS. I hope your user never types in "undefined" as a value!


How on earth am I going to get around this?

Why isn't this a problem with VBScript?

Rob
:)
Jul 19 '05 #4
> Thanks for the response!

You're welcome!
var edition = String (Request.Form ("edition")),
language = String (Request.Form ("language"));
OK, well this gets out the values as Strings..


It will invoke the toString method for the object, which is what you want.
I hope this helps. I don't often see server-side JScript questions here,
most people seem to think that if it's ASP then it must be VBS.


I spent a lot of time learning Javascript - I want to keep using it!


Amen to that!
PS. I hope your user never types in "undefined" as a value!


How on earth am I going to get around this?


I use code like this:

var action = (typeof (Request.Form.Item ("action")) == "undefined")
? null
: String (Request.Form.Item ("action"));

It's a bit clumsy but I've never come up with anything better. Now you can
test for empty field (ie. == null) and use a default value or send an error
or whatever.
Why isn't this a problem with VBScript?


Dunno. Never used VBScript :)

Happy JavaScript
MightyC

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.520 / Virus Database: 318 - Release Date: 18/09/03
Jul 19 '05 #5
Hi again!
I use code like this:

var action = (typeof (Request.Form.Item ("action")) == "undefined")
? null
: String (Request.Form.Item ("action"));


Except that I am finding this:
typeof (Request ("notThere"))
or
typeof (Request.Form.Item ("notThere"))
returns
"object"

and not "undefined"

Rob
:)
Jul 19 '05 #6
On Sun, 19 Oct 2003 12:28:15 +1000, "Robert Mark Bram"
<re********@removethis.optushome.com.au> wrote:
Hi again!
I use code like this:

var action = (typeof (Request.Form.Item ("action")) == "undefined")
? null
: String (Request.Form.Item ("action"));


Except that I am finding this:
typeof (Request ("notThere"))
or
typeof (Request.Form.Item ("notThere"))
returns
"object"

and not "undefined"


Yes, that's correct, it's a collection. As I said in your other
thread I usually just convert it to a string immediately and handle
undefined later. However, this is the "proper" way to do it:

var foo = Request.Form("foo").Count == 0
? null
: Request.Form("foo").item()

item() will return a string of all the foo arguments concatenated
together and delimited by commas, for example, if you have
?foo=123&foo=456 then .item() will return "123, 456". If you could
potentially have multiple instances of the same argument and the value
may contain a comma then you should loop through the collection using
..item(i), which returns the i-th foo argument, to be sure you handle
the values correctly.

Regards,
Steve
Jul 19 '05 #7
On Sat, 18 Oct 2003 22:04:04 +0000 (UTC), "The Mighty Chaffinch"
<mi*************@hotmail.com> wrote:
> var edition = String (Request.Form ("edition")),
> language = String (Request.Form ("language"));


OK, well this gets out the values as Strings..


It will invoke the toString method for the object, which is what you want.


These are not JScript objects; they don't have a toString() method.
String(edition) calls the default method for the object which, in this
case, happens to be item().

Regards,
Steve
Jul 19 '05 #8
Howdy Steve - thank you very much for your response!

(from your other reply)
These are not JScript objects; they don't have a toString() method.
String(edition) calls the default method for the object which, in this
case, happens to be item().
*the fog begins to lift* .. :)
Yes, that's correct, it's a collection. .... var foo = Request.Form("foo").Count == 0
? null
: Request.Form("foo").item()


Now that I see it is a collection, this is exactly what I wanted!

Rob
:)
Jul 19 '05 #9

This discussion thread is closed

Replies have been disabled for this discussion.

By using this site, you agree to our Privacy Policy and Terms of Use.