|
it
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
JScript/ASP prototype doesn't work from an include?
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. 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. Show quote "Jonathan Dodds" <NO_REPLY> wrote in message news:eYhgxupKFHA.3336@TK2MSFTNGP10.phx.gbl... >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. > > Thanks.
I tried both ways: two <script> blocks and two sets of <% %> blocks. As long as I match, the code works correctly. Show quote "Jason Brown [MSFT]" <i-brj***@online.microsoft.com> wrote in message news:ekIsbBqKFHA.3652@TK2MSFTNGP10.phx.gbl... > 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:eYhgxupKFHA.3336@TK2MSFTNGP10.phx.gbl... > >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. > > > > > > 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 eYhgxupKFHA.3***@TK2MSFTNGP10.phx.gbl, Show quote "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. > > Thanks Aaron. That is exactly the problem.
Show quote "Aaron [SQL Server MVP]" <ten.xoc@dnartreb.noraa> wrote in message news:BE5E62C2.38DD%ten.xoc@dnartreb.noraa... > 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 eYhgxupKFHA.3***@TK2MSFTNGP10.phx.gbl, > "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. > > > > > |
|||||||||||||||||||||||