Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Obtener datos JSON desde Webmethod llamado por jQuery

Estas en el tema de Obtener datos JSON desde Webmethod llamado por jQuery en el foro de .NET en Foros del Web. Estimados, Soy nuevo en esto de .Net, en la empresa me han pedido que traspase un sistema hecho en PHP a .Net y en eso ...
  #1 (permalink)  
Antiguo 11/10/2013, 13:02
 
Fecha de Ingreso: septiembre-2013
Mensajes: 9
Antigüedad: 10 años, 7 meses
Puntos: 0
Obtener datos JSON desde Webmethod llamado por jQuery

Estimados,

Soy nuevo en esto de .Net, en la empresa me han pedido que traspase un sistema hecho en PHP a .Net y en eso estoy. Hasta acá todo bien salvo que ahora no sé cómo retornar 2 valores por JSON desde un webmethod que llamo por jQuery. El código va mas o menos así


Código:
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.Script.Serialization

...

<Serializable()>
    Public Class resultadoPlanTrabajo
        Public id As Integer = 0, result As String = ""
    End Class


    <System.Web.Services.WebMethod()>
    Public Shared Function GrabarPlanDeTrabajo( _
        ByVal pm_plan_inv_id As Integer _
        , ByVal pm_gru_int_id As Integer _
        , ByVal pm_per_id As Integer _
        , ByVal pm_conf_agno As Integer _
        , ByVal pm_plan_inv_nombre As String _
        , ByVal pm_plan_inv_proposito As String _
        , ByVal pm_plan_inv_responsable As String _
    ) As String
        Dim oRes As New resultadoPlanTrabajo

        If Not (HttpContext.Current.Session("per_id") Is Nothing) Then
            'verificacion de parametros
            Dim oFunc As New FuncionesGenerales
            Dim plan_inv_id As Integer = oFunc.VerificaID(pm_plan_inv_id)
            Dim gru_int_id As Integer = oFunc.VerificaID(pm_gru_int_id)
            Dim per_id As Integer = oFunc.VerificaID(pm_per_id)
            Dim conf_agno As Integer = oFunc.VerificaID(conf_agno)
            Dim nombre As String = oFunc.LimpiaCodigo(pm_plan_inv_nombre)
            Dim proposito As String = oFunc.LimpiaCodigo(pm_plan_inv_proposito)
            Dim responsable As String = oFunc.LimpiaCodigo(pm_plan_inv_responsable)
            
            Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("SIGGI").ConnectionString)
            Dim cmd As New SqlCommand("udsp_grabarPlanInvolucramiento", conn)
            cmd.CommandType = CommandType.StoredProcedure
            With cmd.Parameters
                .Add("@nuevo_id", SqlDbType.Int).Direction = ParameterDirection.Output
                .Add("@pm_id", SqlDbType.Int).Value = plan_inv_id.ToString()
                .Add("@pm_gru_int_id", SqlDbType.Int).Value = gru_int_id
                .Add("@pm_per_id", SqlDbType.Int).Value = per_id.ToString()
                .Add("@pm_conf_agno", SqlDbType.Int).Value = conf_agno.ToString()
                .Add("@pm_nombre", SqlDbType.VarChar, 150).Value = nombre.ToString()
                .Add("@pm_proposito", SqlDbType.Text).Value = proposito.ToString()
                .Add("@pm_responsable", SqlDbType.VarChar, 100).Value = responsable.ToString()
            End With
            conn.Open()
            cmd.ExecuteNonQuery()

            Dim nuevoId As Integer = cmd.Parameters("@nuevo_id").Value
            If (IsNumeric(nuevoId) And nuevoId > 0) Then
                oRes.id = nuevoId.ToString()
                oRes.result = "ok"
            Else
                oRes.id = "0"
                oRes.result = "error"
            End If
            conn.Close()
            conn.Dispose()
        Else
            oRes.id = "0"
            oRes.result = "error_sesion"
        End If

        Dim serializer As New JavaScriptSerializer
        Return serializer.Serialize(oRes)
    End Function

Esto visto desde el firebug me devuelve lo siguiente

Encabezados Respuesta: Content-Type application/json; charset=utf-8 (entre otros)

Respuesta: {"d":"{\"id\":18,\"result\":\"ok\"}"}

JSON: d "{"id":18,"result":"ok"}"


El código con el que llamo al webmethod es el siguiente:
Código:
strData = "{";
    strData += "'pm_plan_inv_id':'" + $("#plan_inv_id").val() + "'";
    strData += ", 'pm_gru_int_id': '" + $("#gru_int_id").val() + "'";
    strData += ", 'pm_per_id': '" + $("#per_id").val() + "'";
    strData += ", 'pm_conf_agno': '" + $("#conf_agno").val() + "'";
    strData += ", 'pm_plan_inv_nombre': '" + $("#nombre").val() + "'";
    strData += ", 'pm_plan_inv_proposito': '" + $("#proposito").val() + "'";
    strData += ", 'pm_plan_inv_responsable': '" + $("#responsable").val() + "'";
    strData += "}";
    $.ajax({
        type: "POST",
        url: "FichaPlanDeTrabajo.aspx/GrabarPlanDeTrabajo",
        data: strData,
        contentType: "application/json; charset=iso-8859-1",
        dataType: "json",
        success: function (resp) {
            if (resp.d.result == 'ok') {
                notificar(oContent, 'Proceso terminado correctamente');
                setTimeout('top.cerrarVentanaModal();', 2000);
            } else {
                mostrarError(oContent, "Ha ocurrido un error al intentar grabar el plan de trabajo");
            }
        },
        error: function (resp) {
            alert('ERROR: ' + resp.responseText)
        }
    });
el tema es que no sé cómo obtener el valor de id y result desde la respuesta JSON, he intentado de muchas formas pero no lo consigo

Quizás sea una tontería de principiante pero la verdad no doy con la solución y estoy pegado en esto, agradeceré sus aportes al respecto

Muchas gracias,

Rodrigo
  #2 (permalink)  
Antiguo 12/10/2013, 22:15
Avatar de othix  
Fecha de Ingreso: mayo-2011
Ubicación: Guatemala
Mensajes: 92
Antigüedad: 13 años
Puntos: 9
Respuesta: Obtener datos JSON desde Webmethod llamado por jQuery

Revisa la documetacion de jquery.

var obj = jQuery.parseJSON( resp.responseText);
alert( obj.id + ' ' + obj.result )
;

http://api.jquery.com/jQuery.parseJSON/
__________________
"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas."
  #3 (permalink)  
Antiguo 14/10/2013, 07:59
 
Fecha de Ingreso: septiembre-2013
Mensajes: 9
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Obtener datos JSON desde Webmethod llamado por jQuery

Cita:
Iniciado por othix Ver Mensaje
Revisa la documetacion de jquery.

var obj = jQuery.parseJSON( resp.responseText);
alert( obj.id + ' ' + obj.result )
;

[URL="http://api.jquery.com/jQuery.parseJSON/"]http://api.jquery.com/jQuery.parseJSON/[/URL]
Muchas gracias Othix,

Efectivamente funcionó cómo indicas salvo un pequeño detalle, que en lugar de utilizar resp.responseText debí utilizar res.d, o sea

var oResp = jQuery.parseJSON(resp.d);
if (oResp.result == 'ok') {
//todo bien
} else {
//error
}

Gracias de nuevo!

Etiquetas: jquery, json, llamado, net, parametros, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:06.