none
Registrando un SP, no puedo pasarlo a Ajax ayuda por favor RRS feed

  • Pregunta

  • Buenos días a todos, de vuelta estoy aquí ahora tengo un problema... en mi clase donde está mi SP para poder registrar alumnos hago llamadas hacia mi archivo .vb y carga normal, los he probado, están de la siguiente forma.

    Clase:

    Public Class MatriculaDatos
    
        Dim conexion As New Datos
        Dim cmd As New SqlCommand
    
        Public Sub Guardaralumno(usuario As String, cod_alu As String, cod_aula As String, cod_pension As String, anio As Integer)
            Try
                conexion.Conectar()
                cmd.CommandType = CommandType.StoredProcedure
                cmd = New SqlCommand("SPMATRICULA", conexion.Conectar)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.CommandText = ("SPMATRICULA")
                cmd.Parameters.Add("@COD_USU", SqlDbType.Char).Value = usuario
                cmd.Parameters.Add("@FEC_MAT", SqlDbType.Date).Value = Date.Now.ToString.Trim()
                cmd.Parameters.Add("@COD_AL", SqlDbType.Char).Value = cod_alu
                cmd.Parameters.Add("@COD_AULA", SqlDbType.Char).Value = cod_aula
                cmd.Parameters.Add("@COD_PENSION", SqlDbType.Char).Value = cod_pension
                cmd.Parameters.Add("@AÑO", SqlDbType.Int).Value = anio
    
                cmd.ExecuteNonQuery()
            Catch ex As Exception
                MsgBox(ex.Message)
    
            End Try
    
    
        End Sub
    
    
    
    
    
    End Class

    Aqui la llamada:

     <System.Web.Services.WebMethod(EnableSession:=True)> _
        Public Shared Function RegistrarAlumnoInfo(seccion As String, cod_pension As String, anio_academico As Integer) As Boolean
    
            Dim Matricular As New MatriculaDatos
            Matricular.Guardaralumno(HttpContext.Current.Session("Usuario"), HttpContext.Current.Session("COD_AL"), seccion, cod_pension, anio_academico)
    
            HttpContext.Current.Session("dofancy") = HttpContext.Current.Session("COD_AL")
            HttpContext.Current.Response.Redirect("/Sistema-Consulta.aspx")
            Return True
        End Function


    , mi problema es que vía ajax no hace la carga pero si me da el succes... aqui el ajax.

    <script type="text/javascript">
        var RegistrarPage = function () {
            var me = this;
            
          
            me.inicializar = function () {
                //event
                $(document).on("click","#Btnguardar", me.onGuardarClick);
            };
    
            me.onGuardarClick = function () {
                //voy a hacer a
                $.ajax({
                    type: "POST",
                    url: "Matriculas/Registrar.aspx/RegistrarAlumnoInfo",
                    
                    //contentType: "application/json; charset=utf-8",
                    //dataType: "json",
                    data: JSON.stringify(
                        {
                            seccion: $("#seccion").val(),
                            cod_pension: $("#costo_id").val(),
                            anio_academico: $("#anio_academico").val()
                        }),                    
                    success: function (response) {
                        $.prompt("Matricula registrada con exito");
                    },
                    error: function (response) {
                        console.log(response.d);
                    }
                });
            };
    
            return {
                inicializar : me.inicializar
            }
    
        }();
    
        //on ready/onload
        $(function () {
            RegistrarPage.inicializar();
        });
    </script>

    y todo mediante el botón de llamada "guardar" a quien ya le quité su runat server, 

    he puesto estas lineas en comentarios porque no me salia el prompt ni registraba..

     //contentType: "application/json; charset=utf-8",
     //dataType: "json",

    Y ahora no sé como continuar, no registra, pero si me sale el prompt 

    $.prompt("Matricula registrada con exito");

    nada más, cuando lo pruebo normal funciona con el boton guardar, pero cuando lo envío via webservice por json no me funciona.

    martes, 22 de diciembre de 2015 15:09

Respuestas

  • hola

    no puedes hacer un HttpContext.Current.Response.Redirect dentreo de un webmethod, es una pesima idea

    el redirect lo deberias hacer cuando vuelve desde javascript usando location.href

    <System.Web.Services.WebMethod(EnableSession:=True)> _ Public Shared Function RegistrarAlumnoInfo(seccion As String, cod_pension As String, anio_academico As Integer) As Boolean Dim Matricular As New MatriculaDatos Matricular.Guardaralumno(HttpContext.Current.Session("Usuario"), HttpContext.Current.Session("COD_AL"), seccion, cod_pension, anio_academico) HttpContext.Current.Session("dofancy") = HttpContext.Current.Session("COD_AL")

    Return True End Function

    y en el $.ajax

    $.ajax({ type: "POST", url: "Matriculas/Registrar.aspx/RegistrarAlumnoInfo", //contentType: "application/json; charset=utf-8", //dataType: "json", data: JSON.stringify( { seccion: $("#seccion").val(), cod_pension: $("#costo_id").val(), anio_academico: $("#anio_academico").val() }), success: function (response) { $.prompt("Matricula registrada con exito");

    location.href='Sistema-Consulta.aspx'; }, error: function (response) { console.log(response.d); } });

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 22 de diciembre de 2015 15:53

Todas las respuestas

  • Hola HiroshixD,

    ¿Haz intentado colocar un punto de interrupción en el método GuardarAlumno?. Esto te ayudará a identificar que ocurre.

    Tengo la idea de que el campo "anio_academico" no esta llegando con el formato correcto, y esto puede ocasionar le error.

    Intenta con lo que te escribo, y nos platicas como va.

    Saludos,

    @norrojas

    martes, 22 de diciembre de 2015 15:22
  • he verificado con F12 todos los campos y si los captura normalmente, no he corrido en punto de interrupción porque misteriosamente cuando compilo como "ver en explorador" mi pagina se cuelga, y dice que es un script, pero cuando publico todo el proyecto carga normal...

    tu ves algun parámetro que haya sido mal puesto?

    PD: Gracias por la respuesta

    martes, 22 de diciembre de 2015 15:43
  • hola

    no puedes hacer un HttpContext.Current.Response.Redirect dentreo de un webmethod, es una pesima idea

    el redirect lo deberias hacer cuando vuelve desde javascript usando location.href

    <System.Web.Services.WebMethod(EnableSession:=True)> _ Public Shared Function RegistrarAlumnoInfo(seccion As String, cod_pension As String, anio_academico As Integer) As Boolean Dim Matricular As New MatriculaDatos Matricular.Guardaralumno(HttpContext.Current.Session("Usuario"), HttpContext.Current.Session("COD_AL"), seccion, cod_pension, anio_academico) HttpContext.Current.Session("dofancy") = HttpContext.Current.Session("COD_AL")

    Return True End Function

    y en el $.ajax

    $.ajax({ type: "POST", url: "Matriculas/Registrar.aspx/RegistrarAlumnoInfo", //contentType: "application/json; charset=utf-8", //dataType: "json", data: JSON.stringify( { seccion: $("#seccion").val(), cod_pension: $("#costo_id").val(), anio_academico: $("#anio_academico").val() }), success: function (response) { $.prompt("Matricula registrada con exito");

    location.href='Sistema-Consulta.aspx'; }, error: function (response) { console.log(response.d); } });

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 22 de diciembre de 2015 15:53
  • En el Cast del método GuardarAlumno, intenta escribir en la consola y ejecuta tu proyecto en Debug para ver si esta entrando en esa excepción, Ya que cuando hacemos una petición vía ajax quizá tu método MsgBox no funcione correctamente.

    Debug.WriteLine(ex.Message);

    O en otro caso, usa Throw para que si ocurre una excepción puedes observarla.

    Saludos,

    @norrojas

    martes, 22 de diciembre de 2015 15:54