无法在asp.net中使用Json将数据保存在数据库中

时间:2012-06-12 07:47:12

标签: javascript jquery asp.net json

我想用json将数据保存在数据库中。我正在使用以下代码,它既没有给我任何错误,也没有能够在数据库中保存数据。请帮我。我是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);
            }

        });

    }

---------------服务器端代码--------------------

[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";


    }

4 个答案:

答案 0 :(得分:1)

请尝试将数据字符串化:

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

答案 1 :(得分:0)

您的问题很可能与ajax请求无关,而是与上面的行相关

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

由于数据对象没有val方法,因此警报线应该失败。如果您查看浏览器的调试控制台,如果没有出现类似“TypeError:Object#没有方法'val'的错误消息,我会感到惊讶”

答案 2 :(得分:0)

[System.Web.Services.WebMethod]     public static 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";


}

您只使用公共字符串,用户公共静态字符串

答案 3 :(得分:-1)

如果您使用的是ASP.NET(而不是MVC),则必须将此保存 WebMethod用作静态WebMethod。我在这个帖子Click中写了类似的答案。检查此答案中提供的链接是否真有帮助。

此外,您应该开始使用Firebug(在Firefox中)或特定浏览器提供的其他WebDeveloper工具等工具。检查您的请求和响应非常有用。