none
PageMethods is not defined RRS feed

  • Pregunta

  • Hola que tal, buenas, vengo con una pregunta y buscando una solución ya que toda la tarde me la pasé observando código para ver si algo tenía mal, desafortunadamente no ya que eh hecho otros ejemplos y esos si me funcionan.
    tengo un un archivo de javascript lo siguiente 

    /// <reference path="jquery-1.11.2.min.js" />
    /// <reference path="bootstrap.min.js" />
    $(document).ready(function () {
    
        $("#btnLogin").click(function (evt) {
    
            PageMethods.Prueba(onSucess, onError);
            return false;
    
            function onSucess(result) {
                if (result)
                    alert('Es verdadero');
                evt.preventDefault();
                window.location.href = "Modulos/Principal.aspx";
            }
            function onError(result) {
                alert('Anda mal algo ');
            }
        })
    })

    en mi aspx lo siguiente:

    <form id="FLogin" runat="server">
                                <asp:ScriptManager runat="server" EnablePageMethods="true"></asp:ScriptManager>
                                <div class="panel panel-primary">
                                    <div class="panel-heading">
    
                                        <h3><i class="fa fa-lock"></i>&nbsp;Inicio de Sesión</h3>
                                    </div>
                                    <div class="panel-body">
                                        <div class="form-group input-group margin-botom">
                                            <span class="input-group-addon"><i class="fa fa-user"></i></span>
                                            <input type="text" class="form-control" placeholder="Usuario" name="txtUser" id="txtUser" />
                                        </div>
                                        <div class="form-group input-group margin-botom">
                                            <span class="input-group-addon"><i class="fa fa-lock"></i></span>
                                            <input type="password" class="form-control" placeholder="Contraseña" name="txtPass" id="txtPass" />
                                        </div>
                                        <div class="form-group margin-botom">
                                            <div class="checkbox">
                                                <input type="checkbox" />Recordar
                                            </div>
                                        </div>
                                    </div>
                                    <div class="panel-footer">
                                        <div class="form-group">
                                            <button type="submit" class="btn btn-success" id="btnLogin"  ><i class="glyphicon glyphicon-log-in" ></i>&nbsp;Iniciar Sesión</button>
                                        </div>
    ..
    ..
    ..
        <footer class="footer">
    
        </footer>
        <!--Scripts JS-->
        <script src="dist/js/jquery-1.11.2.min.js"></script>
        <script src="dist/js/bootstrap.min.js"></script>
        <script src="dist/js/Main.js"></script>
        <script src="dist/js/sb-admin-2.js"></script>
        
    </body>

    y por último en el cs:

            [System.Web.Services.WebMethod()]
            public static bool Prueba()
            {
                return true;
            }

    ahora, como se darán cuenta y ya en la desesperación, solo puse que arrojara un true y que diera una alerta y cambiara de página, pero al momento de correrlo y presionar el botón me arroja una excepción : ReferenceError:PageMethods is not defined

    Ya no se me ocurre otra cosa que hacer, les agradecería mucho su ayuda.

    De antemano Gracias...


    • Editado Romario Rmz jueves, 9 de abril de 2015 2:38 privacidad
    jueves, 9 de abril de 2015 2:37

Respuestas

  • Puedes ver en el el fuente de tu página en el navegador si existe esto? Es código que se inyecta en la página cuando se establece un ScripManager

     var PageMethods = function() {
            PageMethods.initializeBase(this);
            this._timeout = 0;
            this._userContext = null;
            this._succeeded = null;
            this._failed = null;
        }
        PageMethods.prototype = {
            _get_path:function() {
                var p = this.get_path();
                if (p) return p;
                else return PageMethods._staticInstance.get_path();},
                
                ...


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    • Editado Sergio Parra jueves, 9 de abril de 2015 15:04
    • Marcado como respuesta Romario Rmz jueves, 9 de abril de 2015 17:35
    jueves, 9 de abril de 2015 15:03

Todas las respuestas

  • hola,

    vamos primero a decorar tu metido Prueba aparte como,bien has hecho con WebMethod() añade

    [ScriptMethod()]


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 9 de abril de 2015 4:13
  • hola que tal, aun poniendo [ScriptMethod()] no me funciona, me aparece la misma leyenda

    jueves, 9 de abril de 2015 14:11
  • Cual es el archivo .js que tienes dicho código?

    Lo digo porque debes cargarlo después de cargar el ScriptManager


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 9 de abril de 2015 14:15
  • Ese código de definición del aspx es de una Page o de la Master? Porque tengo entendido que en la Master no se permite PageMethods

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 9 de abril de 2015 14:20
  • se llama Main.js, en el código que publique viene antes de finalizar el body, supongo que el ScriptManager tiene tiempo de cargar, se que mi problema es el ScriptManager, pero no se como solucionarlo ya que en otras pruebas que había hecho lo quito y me sale la excepción
    • Marcado como respuesta Romario Rmz jueves, 9 de abril de 2015 14:22
    • Desmarcado como respuesta Romario Rmz jueves, 9 de abril de 2015 14:22
    jueves, 9 de abril de 2015 14:22
  • es una Page
    jueves, 9 de abril de 2015 14:25
  • No tendrás esa Page enlazada con una Master y la Master posee un ScriptManager verdad? 

    Lo digo porque SOLO puede haber un ScriptManager, en este caso el de la master.

    Espero explicarme


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 9 de abril de 2015 14:28
  • No está enlazada ya que la Page tiene un diseño diferente a la de la Master, aun si estuviera enlazada y tuviera dos ScriptManager me mandaría una excepción
    jueves, 9 de abril de 2015 14:33
  • Probamos una cosa? 

    Pon esa funcion que tienes en el .js y ponlo directo en tu página aspx y nos dices

     


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 9 de abril de 2015 14:42
  • Ni así,
    jueves, 9 de abril de 2015 14:58
  • Puedes ver en el el fuente de tu página en el navegador si existe esto? Es código que se inyecta en la página cuando se establece un ScripManager

     var PageMethods = function() {
            PageMethods.initializeBase(this);
            this._timeout = 0;
            this._userContext = null;
            this._succeeded = null;
            this._failed = null;
        }
        PageMethods.prototype = {
            _get_path:function() {
                var p = this.get_path();
                if (p) return p;
                else return PageMethods._staticInstance.get_path();},
                
                ...


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    • Editado Sergio Parra jueves, 9 de abril de 2015 15:04
    • Marcado como respuesta Romario Rmz jueves, 9 de abril de 2015 17:35
    jueves, 9 de abril de 2015 15:03
  • No lo esta inyectando, 
    jueves, 9 de abril de 2015 15:09
  • puedes poner tu código del aspx? Define tu ScriptManager fuera del <form>

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    jueves, 9 de abril de 2015 15:20
  • <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="SA.Default" %>
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <link href="bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
        <%--<link href="dist/css/bootstrap.min.css" rel="stylesheet" />--%>
        <%--<link href="dist/css/bootstrappaper.min.css" rel="stylesheet" />--%>
        <link href="dist/css/font-awesome-4.3.0/css/font-awesome.min.css" rel="stylesheet" />
        <link href="dist/css/Estilo.css" rel="stylesheet" />
        <title></title>
    </head>
    <body>
        <div id="wrap">
            <nav class="navbar navbar-azul" role="navigation">
                <div class="container-fluid ">
                    <div class="navbar-header">
                        <button type="button" class="navbar-toggle">
                            <span class="sr-only">Toggle navigation</span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar "></span>
                        </button>
                        <label class="navbar-brand"></label>
                    </div>
                </div>
            </nav>
            <div id="main">
                <div class="Contenedor">
                    <div class="container">
                        <div class="col-xs-12 col-sm-12 col-md-4 col-md-push-4 col-lg-4">
                            <form id="FLogin" runat="server">
                                <div class="panel panel-primary">
                                    <div class="panel-heading">
    
                                        <h3><i class="fa fa-lock"></i>&nbsp;Inicio de Sesión</h3>
                                    </div>
                                    <div class="panel-body">
                                        <div class="form-group input-group margin-botom">
                                            <span class="input-group-addon"><i class="fa fa-user"></i></span>
                                            <input type="text" class="form-control" placeholder="Usuario" name="txtUser" id="txtUser" />
                                        </div>
                                        <div class="form-group input-group margin-botom">
                                            <span class="input-group-addon"><i class="fa fa-lock"></i></span>
                                            <input type="password" class="form-control" placeholder="Contraseña" name="txtPass" id="txtPass" />
                                        </div>
                                        <div class="form-group margin-botom">
                                            <div class="checkbox">
                                                <input type="checkbox" />Recordar
                                            </div>
                                        </div>
                                    </div>
                                    <div class="panel-footer">
                                        <div class="form-group">
                                            <button type="submit" class="btn btn-success" id="btnLogin"  ><i class="glyphicon glyphicon-log-in" ></i>&nbsp;Iniciar Sesión</button>
                                        </div>
                                    </div>
                                    
                                </div>
                            </form><asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True">
                                    </asp:ScriptManager>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <footer class="footer">
            <label>2015 &copy </label>
        </footer>
        <!--Scripts JS-->
        <script src="dist/js/jquery-1.11.2.min.js" type="text/javascript"></script>
        <script src="dist/js/Main.js" type="text/javascript"></script>
        <script src="dist/js/bootstrap.min.js" type="text/javascript"></script>
        <script src="dist/js/sb-admin-2.js" type="text/javascript"></script>
        
    </body>
    </html>
    

    jueves, 9 de abril de 2015 15:28
  • establece

    <!--Scripts JS-->
        <script src="dist/js/jquery-1.11.2.min.js" type="text/javascript"></script>
        <script src="dist/js/Main.js" type="text/javascript"></script>
        <script src="dist/js/bootstrap.min.js" type="text/javascript"></script>
        <script src="dist/js/sb-admin-2.js" type="text/javascript"></script>

    dentro de <head> y el scriptmanager en el sitio anterior


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 9 de abril de 2015 15:43
  • Ya había probado eso y de igual manera no me funciona, sigo obteniendo la excepción
    jueves, 9 de abril de 2015 15:47
  • espera...

    creo que ya lo he visto

    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
                <Scripts>
                    <asp:ScriptReference Path="dist/js/Main.js"/>
                </Scripts>
    </asp:ScriptManager>


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 9 de abril de 2015 15:54
  • lo siento pero ni así, y aun no me inserta el código el ScriptManager para poder utilizar la function PageMethods.
    jueves, 9 de abril de 2015 16:02
  • Trata agregando en web.config lo siguiente:

          <httpHandlers>
            <remove verb="*" path="*.asmx"/>
            <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
          </httpHandlers>
          <httpModules>
            <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
          </httpModules>

    dentro de <system.web>

    Saludos.

    jueves, 9 de abril de 2015 16:55
  • lo siento pero no, 
    jueves, 9 de abril de 2015 17:25
  • No se como paso, el punto es que se soluciono de la nada, en una de esas ya se encontraba inyectando el código el ScriptManager, gracias por apoyarme en esto.
    jueves, 9 de abril de 2015 17:35