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

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

P: n/a
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.
Jul 22 '05 #1
Share this Question
Share on Google+
4 Replies


P: n/a
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:eY**************@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.

Jul 22 '05 #2

P: n/a
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 eY**************@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.


Jul 22 '05 #3

P: n/a
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]" <i-******@online.microsoft.com> wrote in message
news:ek**************@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:eY**************@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.


Jul 22 '05 #4

P: n/a
Thanks Aaron. That is exactly the problem.

"Aaron [SQL Server MVP]" <te*****@dnartreb.noraa> wrote in message
news:BE5E62C2.38DD%te*****@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 eY**************@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.

Jul 22 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.