1

我想用 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

4 回答 4

1

请尝试对您的数据进行字符串化:

$.ajax({ 
....,
data: JSON.stringify(data),
....
于 2012-06-12T08:11:12.537 回答
0

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

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

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

于 2012-06-12T08:17:02.440 回答
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 = 新的 SqlCommand(); cmd.Connection = con; con.Open(); cmd.CommandText="插入 tbfirst 值(@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 = 工资;

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


}

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

于 2014-08-16T05:51:27.427 回答
-1

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

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

于 2012-06-12T08:02:29.250 回答