472,126 Members | 1,651 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,126 software developers and data experts.

HOWTO Make CStr for JavaScript on ASP w/ Request.Form and QueryStr

HOWTO Make CStr for JavaScript on ASP w/ Request.Form and QueryString

In ASP, Request.Form and Request.QueryString return objects that do not
support "toString", or any JavaScript string operation on parameters not
passed.

Example: Make a TST.asp and post to it as TST.asp?STATE=TEST

<%@ Language=JavaScript %>
<%
Response.AddHeader("Pragma", "No-Cache");
%>
<html>
<%
var csTST = Request.Form("STATE");

if ((csTST == "") || (typeof(csTST) == "undefined"))
{
%>
Request.Form("STATE") is NULL/Empty/Blank<br>
<%
}
else
{
%>
Request.Form("STATE") = "<%=csTST%>"<br>
<%
}

csTST = Request.QueryString("STATE");

if ((csTST == "") || (typeof(csTST) == "undefined"))
{
%>
Request.QueryString("STATE") is NULL/Empty/Blank<br>
<%
}
else
{
%>
Request.QueryString("STATE") = "<%=csTST%>"<br>
<%
}
%>
</html>

From this sample, the output will be as such:

Request.Form("STATE") = ""
Request.QueryString("STATE") = "REGISTER"

This is WRONG. The Request.Form is blank, but yet, the test for "" and even
typeof failed to detect it. What I want is some kind of CStr function so that
the returned data is 100% turned into a string that JavaScript can work upon.

Any ideas?

Mar 21 '07 #1
7 9496
"ATS" <AT*@discussions.microsoft.comwrote in message
news:D0**********************************@microsof t.com...
HOWTO Make CStr for JavaScript on ASP w/ Request.Form and QueryString

In ASP, Request.Form and Request.QueryString return objects that do not
support "toString", or any JavaScript string operation on parameters not
passed.

Example: Make a TST.asp and post to it as TST.asp?STATE=TEST

<%@ Language=JavaScript %>
<%
Response.AddHeader("Pragma", "No-Cache");
%>
<html>
<%
var csTST = Request.Form("STATE");

if ((csTST == "") || (typeof(csTST) == "undefined"))
{
%>
Request.Form("STATE") is NULL/Empty/Blank<br>
<%
}
else
{
%>
Request.Form("STATE") = "<%=csTST%>"<br>
<%
}

csTST = Request.QueryString("STATE");

if ((csTST == "") || (typeof(csTST) == "undefined"))
{
%>
Request.QueryString("STATE") is NULL/Empty/Blank<br>
<%
}
else
{
%>
Request.QueryString("STATE") = "<%=csTST%>"<br>
<%
}
%>
</html>

From this sample, the output will be as such:

Request.Form("STATE") = ""
Request.QueryString("STATE") = "REGISTER"

This is WRONG. The Request.Form is blank, but yet, the test for "" and
even
typeof failed to detect it. What I want is some kind of CStr function so
that
the returned data is 100% turned into a string that JavaScript can work
upon.
>
Any ideas?
Adding this returns what you expect:

<form method="post">
<input type="text" name="STATE" value="">
<input type="submit" value="Submit">
</form>

This too: http://localhost/temp/TST.asp?STATE=

(If I understand you correctly.)
Mar 21 '07 #2

"ATS" <AT*@discussions.microsoft.comwrote in message
news:D0**********************************@microsof t.com...
HOWTO Make CStr for JavaScript on ASP w/ Request.Form and QueryString

In ASP, Request.Form and Request.QueryString return objects that do not
support "toString", or any JavaScript string operation on parameters not
passed.

Example: Make a TST.asp and post to it as TST.asp?STATE=TEST

<%@ Language=JavaScript %>
<%
Response.AddHeader("Pragma", "No-Cache");
%>
<html>
<%
var csTST = Request.Form("STATE");

if ((csTST == "") || (typeof(csTST) == "undefined"))
{
%>
Request.Form("STATE") is NULL/Empty/Blank<br>
<%
}
else
{
%>
Request.Form("STATE") = "<%=csTST%>"<br>
<%
}

csTST = Request.QueryString("STATE");

if ((csTST == "") || (typeof(csTST) == "undefined"))
{
%>
Request.QueryString("STATE") is NULL/Empty/Blank<br>
<%
}
else
{
%>
Request.QueryString("STATE") = "<%=csTST%>"<br>
<%
}
%>
</html>

From this sample, the output will be as such:

Request.Form("STATE") = ""
Request.QueryString("STATE") = "REGISTER"

This is WRONG. The Request.Form is blank, but yet, the test for "" and
even
typeof failed to detect it. What I want is some kind of CStr function so
that
the returned data is 100% turned into a string that JavaScript can work
upon.
>
Any ideas?
You need to bear in mind that that both form and querystring fields can be
multivalued hence both actual return an indexable object. The objects
returned have an Item indexer property that is marked as the default
property. In VBScript whether to access this default property or not is
determined by whether the assignment is prefixed with the Set keyword. In
JScript default properties are ignored and the object reference is always
passed.

Hence in the code above it doesn't matter what name you pass to QueryString
or Form you will always get an object back. I.E. typeof(csTest) ==
'object' will always be true.

Use code like this:-

csTST = Request.QueryString("STATE").Item // note the additional explicit
use of Item.

Now with no state in the query string then typeof(csTST) == 'undefined' is
true.

With ?state= then typeof(csTST) == 'string' is true and csTST == "" is
true.

With ?state=NY then typeof(csTST) == 'string' is true and csTST == "" is
false.

Personally I would just use:-

if (csTest)
{

}

in my code.

Mar 22 '07 #3
Thanks Anthony, this helps,

All that was needed was the ".Item".

Sadly, nowhere in the ASP/IIS documentation is that mentioned. And it makes
a HUGE difference.

Mar 22 '07 #4
ATS wrote:
All that was needed was the ".Item".

Sadly, nowhere in the ASP/IIS documentation is that mentioned.
And it makes a HUGE difference.
Yes, it does. That is one of the many reasons why I suggest people use
Visual Studio when writing ASP in JScript -- even though the documentation
tell you nothing, Intellisense tells you plenty about the structure of
objects. And Visual Web Developer Express is free!

--
Dave Anderson

Unsolicited commercial email will be read at a cost of $500 per message. Use
of this email address implies consent to these terms.
Mar 22 '07 #5

Actually, no, in our Visual Studio 2003, with the MSDN, dated July 2004,
there is no documentation anywheres about the Request.Form or
Request.QueryString.

Maybe in later MSDN's or later VisualStudio's it does, but ours does not.
Mar 23 '07 #6

"ATS" <AT*@discussions.microsoft.comwrote in message
news:9A**********************************@microsof t.com...
>
Actually, no, in our Visual Studio 2003, with the MSDN, dated July 2004,
there is no documentation anywheres about the Request.Form or
Request.QueryString.

Maybe in later MSDN's or later VisualStudio's it does, but ours does not.
I'm use VS 2003 with the supplied MSDN installed.

On my system the docs are found here (bet if you tweak 2003FEB to 2004JUL
it'd work on yours)

ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1033/iisref/htm/ref_vbom_reqocqs.h
tm

It's natural to expect to find this documentation under Server Tech / Active
Server Pages but nooo!

You have to go through Server Tech -IIS ->SDK ->IIS -Reference ->IIS
Development -ASP Ref.
Intuative huh?

Online it's here:-

http://msdn.microsoft.com/library/en...8557fe2de0.asp

In the same intuative place.



Mar 23 '07 #7
[Please quote on USENET]

"ATS" wrote:
Actually, no, in our Visual Studio 2003, with the MSDN, dated July
2004, there is no documentation anywheres about the Request.Form
or Request.QueryString.
I did not say the Visual Studio documentation said anything about it. I said
that Intellisense does.


--
Dave Anderson

Unsolicited commercial email will be read at a cost of $500 per message. Use
of this email address implies consent to these terms.

Mar 23 '07 #8

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

1 post views Thread by Neil Sandow | last post: by
3 posts views Thread by PVU | last post: by
19 posts views Thread by dmiller23462 | last post: by
5 posts views Thread by Wilhelm Pieper | last post: by
7 posts views Thread by Bruno Alexandre | last post: by
3 posts views Thread by anthonybrough | last post: by
reply views Thread by leo001 | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.