我想使用ajax调用来检查Boolean是true还是false。 这是我的网络方法:
[WebMethod]
public Boolean Login(string uname, string password)
{
if (ValidateUser(uname, password))
{
FormsAuthentication.Authenticate(uname, password);
return true;
}
return false;
}
这是我的ajax调用,但它不能正常工作
$(document).ready(function () {
$('#btnLogin').click(function () {
var username = "test"
var password = "1234"
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "wsLogin.asmx/Login",
data: "{uname: '" + username + "'" + ",pwd: '" + password + "' }",
dataType: "Json",
success: function (success) {
alert("Boolean True");
},
error: function (error) {
alert("Boolean False");
}
});
});
});
我正在尝试创建一个登录名,所以我使用布尔值来检查用户是否经过身份验证
答案 0 :(得分:1)
不幸的是,ajax似乎是.toString()的答案,所以布尔值变为" True"或"错误"如果你返回一个Json数据结构而不是像
那样 return Json(new { Error = true, ErrorMessages = new []{e.Message} });
值将是真正的布尔值。
答案 1 :(得分:1)
我遇到了同样的问题。
我意识到error: function (error) {}
永远不会被调用,即使我的webmethod
返回false
。
实际发生的是,只要webmethod本身不产生任何错误(如异常),那么错误函数永远不会触发!网络方法永远是成功的!
所以将你的真/假逻辑放在成功函数中:
$(document).ready(function () {
$('#btnLogin').click(function () {
var username = "test"
var password = "1234"
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "wsLogin.asmx/Login",
data: "{uname: '" + username + "'" + ",pwd: '" + password + "' }",
dataType: "Json",
success: function (result) {
if(result == "true")
alert("Boolean True");
else
alert("Boolean False");
},
error: function (error) {
error = error; //do nothing
}
});
});
});
答案 2 :(得分:0)
试试这个:
$(document).ready(function () {
$('#btnLogin').click(function () {
var username = "test"
var password = "1234"
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "wsLogin.asmx/Login",
data: "{uname: '" + username + "'" + ",pwd: '" + password + "' }",
dataType: "Json",
success: function (data) {
if(data)
alert("Boolean True");
else
alert("Boolean False");
},
error: function (error) {
alert("Error");
}
});
});
});