Discussion:
Duda con ScriptManager y Codigo JavaScript
(demasiado antiguo para responder)
C OM
2009-08-21 11:11:02 UTC
Permalink
Buenos Dias / Tardes

Primero agradecerles la atencion que le han prestado a este post..

Una consulta/duda/problema o falta de conocimientos por mi parte.

He creado un nuevo sitio web con VS 2005, con las correspondiente plantilla
de Ajax. (utilizo el Net Framework 2.0)

Este es el codigo de ejemplo

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb"
Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endrequesthandler);
function endrequesthandler(sender, args) {
if (args.get_error() == undefined) {
avisame();
}
}
function avisame() {
alert("Hello....");
}
avisame();
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
</div>
</form>
</body>
</html>

La cuestion es que si adunto mi codigo JavaScript, en el Head de la Pagina,
al ejecutarlo me aparece el mensaje de error de "'Sys' no esta definindo"
- he buscado por todos lados, he realizado las modificaciones en el Web.config
que debia hacer, y nada de nada....Sige sin funcionar.

El tema esta en que si el mismo codigo JavaScript, lo incluyo debajo del
tag ScriptManager, me funciona sin problemas...

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb"
Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endrequesthandler);
function endrequesthandler(sender, args) {
if (args.get_error() == undefined) {
avisame();
}
}
function avisame() {
alert("Hello....");
}
avisame();

</script>
<div>
</div>
</form>
</body>
</html>

..estoy haciendo algo mal?? este funcionamiento es correcto???

Muchas gracias.
C OM
2009-08-21 13:08:17 UTC
Permalink
Buenas..
Vuelvo a ser yo ;)

He encontrado varios enlaces en las que explican que dicho codigo, debe estar
situado por debajo del ScriptManager, aunque no he podido entrar en detalles
tecnicos.

http://encosia.com/2007/08/16/updated-your-webconfig-but-sys-is-still-undefined/

Muchas gracias.
Post by C OM
Buenos Dias / Tardes
Primero agradecerles la atencion que le han prestado a este post..
Una consulta/duda/problema o falta de conocimientos por mi parte.
He creado un nuevo sitio web con VS 2005, con las correspondiente
plantilla de Ajax. (utilizo el Net Framework 2.0)
Este es el codigo de ejemplo
CodeFile="Default.aspx.vb"
Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endreques
thandler);
function endrequesthandler(sender, args) {
if (args.get_error() == undefined) {
avisame();
}
}
function avisame() {
alert("Hello....");
}
avisame();
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
</div>
</form>
</body>
</html>
La cuestion es que si adunto mi codigo JavaScript, en el Head de la
Pagina, al ejecutarlo me aparece el mensaje de error de "'Sys' no esta
definindo" - he buscado por todos lados, he realizado las
modificaciones en el Web.config que debia hacer, y nada de
nada....Sige sin funcionar.
El tema esta en que si el mismo codigo JavaScript, lo incluyo debajo
del tag ScriptManager, me funciona sin problemas...
CodeFile="Default.aspx.vb"
Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endreques
thandler);
function endrequesthandler(sender, args) {
if (args.get_error() == undefined) {
avisame();
}
}
function avisame() {
alert("Hello....");
}
avisame();
</script>
<div>
</div>
</form>
</body>
</html>
..estoy haciendo algo mal?? este funcionamiento es correcto???
Muchas gracias.
C OM
2009-08-21 13:09:45 UTC
Permalink
Loading this page will result in a Sys undefined error, identical to the
one in the screenshot above. The reason for it is simple: The Sys namespace
is undefined when the script block executes.

The ScriptManager control injects JavaScript includes to initialize the ASP.NET
AJAX Framework, the ScriptManager, and then the UpdatePanel, but it injects
the bulk of that JavaScript in the exact location that the ScriptManager
control is positioned at in the page. So, the script block in the page head
tries to access the PageRequestManager long before the AJAX Framework has
been fully loaded. Hence the error.

The same thing happens if you try to include the same JavaScript code from
an external file in the head, or even in the ScriptManager’s Scripts collection.
Post by C OM
Buenos Dias / Tardes
Primero agradecerles la atencion que le han prestado a este post..
Una consulta/duda/problema o falta de conocimientos por mi parte.
He creado un nuevo sitio web con VS 2005, con las correspondiente
plantilla de Ajax. (utilizo el Net Framework 2.0)
Este es el codigo de ejemplo
CodeFile="Default.aspx.vb"
Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endreques
thandler);
function endrequesthandler(sender, args) {
if (args.get_error() == undefined) {
avisame();
}
}
function avisame() {
alert("Hello....");
}
avisame();
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
</div>
</form>
</body>
</html>
La cuestion es que si adunto mi codigo JavaScript, en el Head de la
Pagina, al ejecutarlo me aparece el mensaje de error de "'Sys' no esta
definindo" - he buscado por todos lados, he realizado las
modificaciones en el Web.config que debia hacer, y nada de
nada....Sige sin funcionar.
El tema esta en que si el mismo codigo JavaScript, lo incluyo debajo
del tag ScriptManager, me funciona sin problemas...
CodeFile="Default.aspx.vb"
Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endreques
thandler);
function endrequesthandler(sender, args) {
if (args.get_error() == undefined) {
avisame();
}
}
function avisame() {
alert("Hello....");
}
avisame();
</script>
<div>
</div>
</form>
</body>
</html>
..estoy haciendo algo mal?? este funcionamiento es correcto???
Muchas gracias.
Loading...