尝试对正确的输入和服务器验证进行jquery验证,以检查是否存在用户/电子邮件。唯一的问题是,即使在通过jquery验证之后,由于某种原因,并不总是从客户端发送参数。 尝试在服务器端方法的开头输入断点,很少进入那里,在向params插入数据后发出警报并看到json看起来没问题。 即时通讯使用Jquery,asp.net,c#。
客户代码:
var user = $("#txt_register_username").val();
var password = $("#txt_register_password").val();
var firstname = $("#txt_register_firstname").val();
var lastname = $("#txt_register_lastname").val();
var birthdate = $("#txt_register_birthdate").val();
var picture = $("#txt_register_picture").val();
var car = $("#txt_register_car").val();
var email = $("#txt_register_email").val();
var home = $("#txt_register_home").val();
var cell = $("#txt_register_cell").val();
var params = "{username:" + user
+ ",firstname:" + firstname
+ ",lastname:" + lastname
+ ",birthdate:" + birthdate
+ ",pic:123"
+ ",carowned:" + car
+ ",email:" + email
+ ",password:" + password
+ ",home:" + home
+ ",cell:" + cell
+ "}";
$.ajax
({
type: "POST",
url: "Register.aspx/AddUser",
data: params,
contentType: "application/json; charset=utf-8",
dateType: "json",
success: function (result) {
alert(result.d);
}
});
pic稍后将是二进制的,所以它只是暂时的,忽略它作为字符串。
服务器代码:
[WebMethod]
public static string AddUser(string username, string firstname, string lastname, string birthdate, string pic, string carowned, string email, string password, string home, string cell)
{
DataSet1TableAdapters.UsersTableAdapter userAdapter = new DataSet1TableAdapters.UsersTableAdapter();
DataSet1.UsersDataTable userTable = new DataSet1.UsersDataTable();
userAdapter.Fill(userTable);
int index = 0;
Console.WriteLine("entering valiation area");
foreach (DataRow dr in userTable.Rows)
{
if (userTable.Rows[index]["username"].Equals(username))
{
Console.WriteLine("a user who already exists tried to create an account");
return "user already exists with that username";
}
if (userTable.Rows[index]["email"].Equals(email))
{
Console.WriteLine("a user who already exists with an email tried to create an account");
return "user already exists with that email";
}
index++;
}
try
{
userAdapter.Insert(username, firstname, lastname, birthdate, pic, carowned, email, password, home, cell);
Console.WriteLine("new user added to db");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return "oops , something went wrong.";
}
return "new user added to database.";
}
答案 0 :(得分:4)
试;
var params = JSON.stringify({
username:user,
firstname :firstname,
lastname:lastname,
birthdate: birthdate,
pic:123,
carowned:car,
email:email,
password: password,
home: home,
cell: cell
});
答案 1 :(得分:1)
尝试切换到这种语法:
var params = {"username" : user,
"firstname" : firstname
....
};
jQuery的数据需要一个json对象解析为服务器变量。
答案 2 :(得分:0)
您应该在json对象中发送数据,但是您将其作为字符串发送! 将语法切换为以下内容:
var params = {username: + user
,firstname: + firstname
,lastname: + lastname
,birthdate: + birthdate
,pic:123
,carowned: + car
,email: + email
,password: + password
,home: + home
,cell: + cell
};
修改强> 如果我是你,我会删除dataType属性以查看它是如何工作的!
答案 3 :(得分:0)
这是因为您的AJAX调用是“POST”,而不是“GET”,因此参数的处理方式不同。
您需要以下内容:
var data = $.toJSON(params);
然后使用AJAX请求发送data
对象,而不是params
。
答案 4 :(得分:0)
正如Jeremy所说,你的JSON不正确
它必须是这样的 {“username”:“user”, “firstname”:“firstname” .... }
下载fiddler,你将能够看到你遇到了什么问题,然后你就可以通过JSONLint.com获取发布的json,这将告诉你为什么你的json形成不正确。
也可以获得json2.js,然后你可以做dotnet dreamer向你展示的内容,stringify可能会内置到一些较新的浏览器中,想想firefox有它,但是像ie8及以下的旧浏览器没有,它现在可能是内置到jquery所以我先检查,最近没有做太多的ajax东西