No se pueden guardar datos en la base de datos con Json en asp.net

Quiero guardar mis datos en la base de datos con json. Estoy usando el siguiente código, no me da ningún error ni puede guardar datos en la base de datos. Por favor, ayúdame. Soy nuevo en json.

function myfun() {
        var name = $('[id$=txt1]').val();
        var email = $('[id$=txt2]').val();
        var address = $('[id$=txt3]').val();
        var salary = $('[id$=txt4]').val();
        var data = { name: name, email: email, address: address, salary: salary };
        alert(data.val());
        $.ajax({
            type: "POST",
            url: "Default.aspx/save",
            // data: "{'name':'" + name + "','email':'" + email + "','address':'" + address + "','salary':'" + salary + "'}",
            data: data,
            contentType: "application/json;charset=utf-8",
            datatype: "json",
            async: true,
            success: function(data) {
                $('[id$=lbl1]').val(data.d)
            },
            error: function(msg) {
                alert("failed: " + msg);
            }

        });

    }

---------------Código del lado del servidor--------------------

[System.Web.Services.WebMethod]
    public String save(String name, String email, String address, Int32 salary)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["cn"].ConnectionString);
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        con.Open();
        cmd.CommandText="insert tbfirst values(@name, @email, @address, @salary)";
            cmd.Parameters.Add("@name",System.Data.SqlDbType.VarChar,50).Value = name;
        cmd.Parameters.Add("@email", System.Data.SqlDbType.VarChar,50).Value = email;
        cmd.Parameters.Add("@address", System.Data.SqlDbType.VarChar,50).Value = address;
        cmd.Parameters.Add("@salary", System.Data.SqlDbType.Int).Value = salary;

        cmd.ExecuteNonQuery();
        cmd.Dispose();
        return "Success";


    }

preguntado el 12 de junio de 12 a las 08:06

¿Ha depurado el código de su servidor para comprobar que se recibe la llamada ajax? coloque el punto de interrupción en su método y adjunte el proceso iis para depurar ... -

No encuentro ningún problema en el código jQuery. ¿Ha intentado establecer un punto de interrupción en la función save ()? Si no está siendo llamado, entonces haga su función Estático y luego intente. -

@Talha, sí, he comprobado esto, puse un punto de interrupción en mi mwthod, pero Jason no me llama... -

4 Respuestas

Por favor, intente secuenciar sus datos:

$.ajax({ 
....,
data: JSON.stringify(data),
....

Respondido el 15 de junio de 12 a las 10:06

Lo más probable es que su problema no esté relacionado con la solicitud de ajax, sino que esté relacionado con la línea que se encuentra justo arriba

var data = { name: name, email: email, address: address, salary: salary };
alert(data.val());

ya que el objeto de datos no tiene un val método, la línea con la alerta debería fallar. Si mira en la consola de depuración de su navegador, me sorprendería si no hay un mensaje de error que diga algo como "TypeError: Object # has no method 'val'"

Respondido el 12 de junio de 12 a las 09:06

[System.Web.Services.WebMethod] guardado de cadena estática pública (nombre de cadena, correo electrónico de cadena, dirección de cadena, salario Int32) { SqlConnection con = new SqlConnection (ConfigurationManager.ConnectionStrings["cn"].ConnectionString); SqlCommand cmd = nuevo SqlCommand(); cmd.Conexión = con; con.Open(); cmd.CommandText="insertar tbfirst valores(@nombre, @correo electrónico, @dirección, @salario)"; cmd.Parameters.Add("@name",System.Data.SqlDbType.VarChar,50).Value = nombre; cmd.Parameters.Add("@email", System.Data.SqlDbType.VarChar,50).Value = email; cmd.Parameters.Add("@dirección", System.Data.SqlDbType.VarChar,50).Valor = dirección; cmd.Parameters.Add("@salary", System.Data.SqlDbType.Int).Value = salario;

    cmd.ExecuteNonQuery();
    cmd.Dispose();
    return "Success";


}

solo usa cadena pública, cadena estática pública de usuario

Respondido 16 ago 14, 06:08

Si está usando ASP.NET (no MVC), tendrá que usar esto ahorrar WebMethod como estático. He escrito una respuesta similar en este hilo. Presione. Verifique el enlace que se proporcionó en esta respuesta, es realmente útil.

También debe comenzar a usar herramientas como Firebug (en Firefox) o alguna otra herramienta WebDeveloper que proporciona el navegador específico. Es muy útil para inspeccionar sus solicitudes y respuesta.

contestado el 23 de mayo de 17 a las 13:05

lea con comprensión ... Soy consciente de que está usando WebMethod pero el método no es STATIC y ese podría ser el caso - mikolaj kieres

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.