Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP General > JScript/ASP prototype doesn't work from an include?

Reply
Thread Tools

JScript/ASP prototype doesn't work from an include?

 
 
Jonathan Dodds
Guest
Posts: n/a
 
      03-17-2005
I have two files in an ASP project I created with VI 6.0: circle.inc and
default.asp.

circle.inc:

// circle.inc

function Circle (xPoint, yPoint, radius) {
this.x = xPoint; // The x component of the center of the circle.
this.y = yPoint; // The y component of the center of the circle.
this.r = radius; // The radius of the circle.
}
Circle.prototype.pi = Math.PI;
Circle.prototype.area = function () {
return this.pi * this.r * this.r;
}



default.asp:

<%@ language="jscript" %>
<html>
<head>
<script language="javascript" runat="server" src="circle.inc"></script>
</head>
<body>
<%
var aCircle = new Circle(5, 11, 99);
for (var x in aCircle)
{
Response.Write(x + " = " + aCircle[x] + " (" + typeof(aCircle[x]) +
")<br>");
}
%>
</body>
</html>



I expect output that look like this:

area = function () { return this.pi * this.r * this.r; } (function)
pi = 3.141592653589793 (number)
x = 5 (number)
y = 11 (number)
r = 99 (number)

This works when the circle constructor and prototype are in the default.asp
file but when I move the code to the circle.inc include file I lose the
members that are added by the prototype. i.e.:

x = 5 (number)
y = 11 (number)
r = 99 (number)

When I use the include file it finds the constructor but loses the
prototype? What the heck!?

I tried using a #include directive instead of the script element. It made no
difference. I searched the MSDN to see if there was some mention of this
issue. I didn't find anything relevant.

Is this a bug or am I including this file incorrectly?

Thanks.


 
Reply With Quote
 
 
 
 
Jason Brown [MSFT]
Guest
Posts: n/a
 
      03-17-2005
don't use a server-side script block to include the code. use an actual SSI

<!--#include virtual="/path/here.inc"-->

code in <% %> delimiters and code in <script> blocks execute in different
contexts, hence your problem here


--
Jason Brown
Microsoft GTSC, IIS

This posting is provided "AS IS" with no warranties, and confers no rights.


"Jonathan Dodds" <NO_REPLY> wrote in message
news:(E-Mail Removed)...
>I have two files in an ASP project I created with VI 6.0: circle.inc and
> default.asp.
>
> circle.inc:
>
> // circle.inc
>
> function Circle (xPoint, yPoint, radius) {
> this.x = xPoint; // The x component of the center of the circle.
> this.y = yPoint; // The y component of the center of the circle.
> this.r = radius; // The radius of the circle.
> }
> Circle.prototype.pi = Math.PI;
> Circle.prototype.area = function () {
> return this.pi * this.r * this.r;
> }
>
>
>
> default.asp:
>
> <%@ language="jscript" %>
> <html>
> <head>
> <script language="javascript" runat="server" src="circle.inc"></script>
> </head>
> <body>
> <%
> var aCircle = new Circle(5, 11, 99);
> for (var x in aCircle)
> {
> Response.Write(x + " = " + aCircle[x] + " (" + typeof(aCircle[x]) +
> ")<br>");
> }
> %>
> </body>
> </html>
>
>
>
> I expect output that look like this:
>
> area = function () { return this.pi * this.r * this.r; } (function)
> pi = 3.141592653589793 (number)
> x = 5 (number)
> y = 11 (number)
> r = 99 (number)
>
> This works when the circle constructor and prototype are in the
> default.asp
> file but when I move the code to the circle.inc include file I lose the
> members that are added by the prototype. i.e.:
>
> x = 5 (number)
> y = 11 (number)
> r = 99 (number)
>
> When I use the include file it finds the constructor but loses the
> prototype? What the heck!?
>
> I tried using a #include directive instead of the script element. It made
> no
> difference. I searched the MSDN to see if there was some mention of this
> issue. I didn't find anything relevant.
>
> Is this a bug or am I including this file incorrectly?
>
> Thanks.
>
>



 
Reply With Quote
 
 
 
 
Aaron [SQL Server MVP]
Guest
Posts: n/a
 
      03-17-2005
I believe you have been bitten by the "order matters" nature of <%%> and
<script> delimiters.

http://www.aspfaq.com/2045

You could try enclosing the inline code with <script> instead of <% or you
could use <% in the .inc file and use a standard <!--#include instead of the
script-tag style.

A


On 3/16/05 9:49 PM, in article http://www.velocityreviews.com/forums/(E-Mail Removed),
"Jonathan Dodds" <NO_REPLY> wrote:

> I have two files in an ASP project I created with VI 6.0: circle.inc and
> default.asp.
>
> circle.inc:
>
> // circle.inc
>
> function Circle (xPoint, yPoint, radius) {
> this.x = xPoint; // The x component of the center of the circle.
> this.y = yPoint; // The y component of the center of the circle.
> this.r = radius; // The radius of the circle.
> }
> Circle.prototype.pi = Math.PI;
> Circle.prototype.area = function () {
> return this.pi * this.r * this.r;
> }
>
>
>
> default.asp:
>
> <%@ language="jscript" %>
> <html>
> <head>
> <script language="javascript" runat="server" src="circle.inc"></script>
> </head>
> <body>
> <%
> var aCircle = new Circle(5, 11, 99);
> for (var x in aCircle)
> {
> Response.Write(x + " = " + aCircle[x] + " (" + typeof(aCircle[x]) +
> ")<br>");
> }
> %>
> </body>
> </html>
>
>
>
> I expect output that look like this:
>
> area = function () { return this.pi * this.r * this.r; } (function)
> pi = 3.141592653589793 (number)
> x = 5 (number)
> y = 11 (number)
> r = 99 (number)
>
> This works when the circle constructor and prototype are in the default.asp
> file but when I move the code to the circle.inc include file I lose the
> members that are added by the prototype. i.e.:
>
> x = 5 (number)
> y = 11 (number)
> r = 99 (number)
>
> When I use the include file it finds the constructor but loses the
> prototype? What the heck!?
>
> I tried using a #include directive instead of the script element. It made no
> difference. I searched the MSDN to see if there was some mention of this
> issue. I didn't find anything relevant.
>
> Is this a bug or am I including this file incorrectly?
>
> Thanks.
>
>


 
Reply With Quote
 
Jonathan Dodds
Guest
Posts: n/a
 
      03-17-2005
Thanks.

I tried both ways: two <script> blocks and two sets of <% %> blocks. As long
as I match, the code works correctly.


"Jason Brown [MSFT]" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> don't use a server-side script block to include the code. use an actual

SSI
>
> <!--#include virtual="/path/here.inc"-->
>
> code in <% %> delimiters and code in <script> blocks execute in different
> contexts, hence your problem here
>
>
> --
> Jason Brown
> Microsoft GTSC, IIS
>
> This posting is provided "AS IS" with no warranties, and confers no

rights.
>
>
> "Jonathan Dodds" <NO_REPLY> wrote in message
> news:(E-Mail Removed)...
> >I have two files in an ASP project I created with VI 6.0: circle.inc and
> > default.asp.
> >
> > circle.inc:
> >
> > // circle.inc
> >
> > function Circle (xPoint, yPoint, radius) {
> > this.x = xPoint; // The x component of the center of the circle.
> > this.y = yPoint; // The y component of the center of the circle.
> > this.r = radius; // The radius of the circle.
> > }
> > Circle.prototype.pi = Math.PI;
> > Circle.prototype.area = function () {
> > return this.pi * this.r * this.r;
> > }
> >
> >
> >
> > default.asp:
> >
> > <%@ language="jscript" %>
> > <html>
> > <head>
> > <script language="javascript" runat="server" src="circle.inc"></script>
> > </head>
> > <body>
> > <%
> > var aCircle = new Circle(5, 11, 99);
> > for (var x in aCircle)
> > {
> > Response.Write(x + " = " + aCircle[x] + " (" + typeof(aCircle[x]) +
> > ")<br>");
> > }
> > %>
> > </body>
> > </html>
> >
> >
> >
> > I expect output that look like this:
> >
> > area = function () { return this.pi * this.r * this.r; } (function)
> > pi = 3.141592653589793 (number)
> > x = 5 (number)
> > y = 11 (number)
> > r = 99 (number)
> >
> > This works when the circle constructor and prototype are in the
> > default.asp
> > file but when I move the code to the circle.inc include file I lose the
> > members that are added by the prototype. i.e.:
> >
> > x = 5 (number)
> > y = 11 (number)
> > r = 99 (number)
> >
> > When I use the include file it finds the constructor but loses the
> > prototype? What the heck!?
> >
> > I tried using a #include directive instead of the script element. It

made
> > no
> > difference. I searched the MSDN to see if there was some mention of this
> > issue. I didn't find anything relevant.
> >
> > Is this a bug or am I including this file incorrectly?
> >
> > Thanks.
> >
> >

>
>



 
Reply With Quote
 
Jonathan Dodds
Guest
Posts: n/a
 
      03-17-2005
Thanks Aaron. That is exactly the problem.

"Aaron [SQL Server MVP]" <(E-Mail Removed)> wrote in message
news:BE5E62C2.38DD%(E-Mail Removed)...
> I believe you have been bitten by the "order matters" nature of <%%> and
> <script> delimiters.
>
> http://www.aspfaq.com/2045
>
> You could try enclosing the inline code with <script> instead of <% or you
> could use <% in the .inc file and use a standard <!--#include instead of

the
> script-tag style.
>
> A
>
>
> On 3/16/05 9:49 PM, in article (E-Mail Removed),
> "Jonathan Dodds" <NO_REPLY> wrote:
>
> > I have two files in an ASP project I created with VI 6.0: circle.inc and
> > default.asp.
> >
> > circle.inc:
> >
> > // circle.inc
> >
> > function Circle (xPoint, yPoint, radius) {
> > this.x = xPoint; // The x component of the center of the circle.
> > this.y = yPoint; // The y component of the center of the circle.
> > this.r = radius; // The radius of the circle.
> > }
> > Circle.prototype.pi = Math.PI;
> > Circle.prototype.area = function () {
> > return this.pi * this.r * this.r;
> > }
> >
> >
> >
> > default.asp:
> >
> > <%@ language="jscript" %>
> > <html>
> > <head>
> > <script language="javascript" runat="server" src="circle.inc"></script>
> > </head>
> > <body>
> > <%
> > var aCircle = new Circle(5, 11, 99);
> > for (var x in aCircle)
> > {
> > Response.Write(x + " = " + aCircle[x] + " (" + typeof(aCircle[x]) +
> > ")<br>");
> > }
> > %>
> > </body>
> > </html>
> >
> >
> >
> > I expect output that look like this:
> >
> > area = function () { return this.pi * this.r * this.r; } (function)
> > pi = 3.141592653589793 (number)
> > x = 5 (number)
> > y = 11 (number)
> > r = 99 (number)
> >
> > This works when the circle constructor and prototype are in the

default.asp
> > file but when I move the code to the circle.inc include file I lose the
> > members that are added by the prototype. i.e.:
> >
> > x = 5 (number)
> > y = 11 (number)
> > r = 99 (number)
> >
> > When I use the include file it finds the constructor but loses the
> > prototype? What the heck!?
> >
> > I tried using a #include directive instead of the script element. It

made no
> > difference. I searched the MSDN to see if there was some mention of this
> > issue. I didn't find anything relevant.
> >
> > Is this a bug or am I including this file incorrectly?
> >
> > Thanks.
> >
> >

>



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Prototype WTP 0.2 released,this release for Prototype 1.6.0 javascript fish Javascript 0 10-11-2008 07:35 AM
Class prototype vs C function prototype June Lee C++ 2 04-13-2008 08:17 PM
Prototype Object.extend(new Base() | Hash | Hash.prototype) usage: jacobstr@gmail.com Javascript 3 03-27-2007 07:56 AM
relation between prototype and Prototype.js shypen42@yahoo.fr Javascript 9 05-26-2006 01:13 AM
Node.prototype.removeChildren CANNOT WORK IN IE BUT FF? zhong.zx@gmail.com Javascript 7 04-07-2006 05:08 PM



Advertisments