By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
429,570 Members | 999 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 429,570 IT Pros & Developers. It's quick & easy.

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

P: n/a
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
Share this Question
Share on Google+
7 Replies


P: n/a
"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

P: n/a

"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

P: n/a
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

P: n/a
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

P: n/a

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

P: n/a

"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

P: n/a
[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.