我想用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";
}
答案 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工具等工具。检查您的请求和响应非常有用。