JavaScript typeof checking a Request value

Discussion in 'ASP General' started by Robert Mark Bram, Oct 16, 2003.

  1. 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
    :)
    Robert Mark Bram, Oct 16, 2003
    #1
    1. Advertising

  2. "Robert Mark Bram" <> 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 -
    Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
    'Faith without judgement merely degrades the spirit divine.'
    Lasse Reichstein Nielsen, Oct 16, 2003
    #2
    1. Advertising

  3. > 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
    The Mighty Chaffinch, Oct 17, 2003
    #3
  4. 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
    :)
    Robert Mark Bram, Oct 17, 2003
    #4
  5. > 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
    The Mighty Chaffinch, Oct 18, 2003
    #5
  6. 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
    :)
    Robert Mark Bram, Oct 19, 2003
    #6
  7. On Sun, 19 Oct 2003 12:28:15 +1000, "Robert Mark Bram"
    <> 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
    Steve van Dongen, Oct 19, 2003
    #7
  8. On Sat, 18 Oct 2003 22:04:04 +0000 (UTC), "The Mighty Chaffinch"
    <> 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
    Steve van Dongen, Oct 19, 2003
    #8
  9. 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
    :)
    Robert Mark Bram, Oct 20, 2003
    #9
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Leon

    Using TypeOf?

    Leon, Nov 1, 2004, in forum: ASP .Net
    Replies:
    7
    Views:
    2,141
    Henri
    Nov 1, 2004
  2. M. Steinbach
    Replies:
    1
    Views:
    620
    tom_usenet
    Feb 20, 2004
  3. M. Steinbach
    Replies:
    0
    Views:
    337
    M. Steinbach
    Feb 20, 2004
  4. fabioppp

    typeof and g++

    fabioppp, Feb 23, 2005, in forum: C++
    Replies:
    10
    Views:
    1,288
    Ben Hetland
    Feb 24, 2005
  5. Robert Mark Bram

    JavaScript typeof checking a Request value

    Robert Mark Bram, Oct 16, 2003, in forum: Javascript
    Replies:
    15
    Views:
    173
    Lasse Reichstein Nielsen
    Oct 20, 2003
Loading...

Share This Page