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

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

am 21.03.2007 21:29:08 von ATS

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");
%>

<%
var csTST = Request.Form("STATE");

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

<%
}
else
{
%>
Request.Form("STATE") = "<%=csTST%>"

<%
}

csTST = Request.QueryString("STATE");

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

<%
}
else
{
%>
Request.QueryString("STATE") = "<%=csTST%>"

<%
}
%>


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?

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

am 22.03.2007 00:03:18 von McKirahan

"ATS" wrote in message
news:D0BA7279-D9BA-4FD0-91C6-C0A498D359DB@microsoft.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");
> %>
>
> <%
> var csTST = Request.Form("STATE");
>
> if ((csTST == "") || (typeof(csTST) == "undefined"))
> {
> %>
> Request.Form("STATE") is NULL/Empty/Blank

> <%
> }
> else
> {
> %>
> Request.Form("STATE") = "<%=csTST%>"

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

> <%
> }
> else
> {
> %>
> Request.QueryString("STATE") = "<%=csTST%>"

> <%
> }
> %>
>
>
> 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:






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

(If I understand you correctly.)

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

am 22.03.2007 10:31:33 von Anthony Jones

"ATS" wrote in message
news:D0BA7279-D9BA-4FD0-91C6-C0A498D359DB@microsoft.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");
> %>
>
> <%
> var csTST = Request.Form("STATE");
>
> if ((csTST == "") || (typeof(csTST) == "undefined"))
> {
> %>
> Request.Form("STATE") is NULL/Empty/Blank

> <%
> }
> else
> {
> %>
> Request.Form("STATE") = "<%=csTST%>"

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

> <%
> }
> else
> {
> %>
> Request.QueryString("STATE") = "<%=csTST%>"

> <%
> }
> %>
>
>
> 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.

Re: HOWTO Make CStr for JavaScript on ASP w/ Request.Form and Quer

am 22.03.2007 14:15:30 von ATS

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.

Re: HOWTO Make CStr for JavaScript on ASP w/ Request.Form and Quer

am 22.03.2007 22:28:14 von Dave Anderson

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.

Re: HOWTO Make CStr for JavaScript on ASP w/ Request.Form and Quer

am 23.03.2007 14:09:11 von ATS

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.

Re: HOWTO Make CStr for JavaScript on ASP w/ Request.Form and Quer

am 23.03.2007 14:21:27 von Anthony Jones

"ATS" wrote in message
news:9AE498E0-A7DA-4008-A8E9-4FE31E0D0AFE@microsoft.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/re f_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-us/iissdk/html/3c778166 -4a3c-4eda-b7cd-bb8557fe2de0.asp

In the same intuative place.

Re: HOWTO Make CStr for JavaScript on ASP w/ Request.Form and Quer

am 23.03.2007 14:25:07 von Dave Anderson

[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.