在Response.d中获取问题,基于checkusers()函数返回的结果我保存了值。如果输入的名称已经在数据库中,则应该说“#34;用户已经存在"”,如果它不在数据库中则应该创建新记录。
但我没有从(响应)中得到正确的值,我发现Console.log(response.d)给了我正确的值,例如' true'或者' false'。我尝试了我所知道的一切 -
var jqXHR = $.ajax({
并返回jqXHR.responseText
但他们都没有为我工作。请帮帮我。
submitHandler: function (form) {
var txtName = $("#txtName").val();
var txtEmail = $("#txtEmail").val();
var txtSurName = $("#txtSurName").val();
var txtMobile = $("#txtMobile").val();
var txtAddress = $("#txtAddress").val();
var obj = CheckUser();
if (obj == false) {
$.ajax({
type: "POST",
url: location.pathname + "/saveData",
data: "{Name:'" + txtName + "',SurName:'" + txtSurName + "',Email:'" + txtEmail + "',Mobile:'" + txtMobile + "',Address:'" + txtAddress + "'}",
contentType: "application/json; charset=utf-8",
datatype: "jsondata",
async: "true",
success: function (response) {
$(".errMsg ul").remove();
var myObject = eval('(' + response.d + ')');
if (myObject > 0) {
bindData();
$(".errMsg").append("<ul><li>Data saved successfully</li></ul>");
}
else {
$(".errMsg").append("<ul><li>Opppps something went wrong.</li></ul>");
}
$(".errMsg").show("slow");
clear();
},
error: function (response) {
alert(response.status + ' ' + response.statusText);
}
});
}
else {
$(".errMsg").append("<ul><li>User Already Exists </li></ul>");
$(".errMsg").show("slow");
}
}
});
$("#btnSave").click(function () {
$("#form1").submit()
});
});
checkusers功能是:
function CheckUser() {
var EmpName = $("#txtName").val();
$.ajax({
type: "POST",
url: location.pathname + "/UserExist",
data: "{Name:'" + EmpName + "'}",
contentType: "application/json; charset=utf-8",
datatype: "jsondata",
async: "true",
success: function (response) {
console.log(response.d);
},
error: function (response) {
alert(response.status + ' ' + response.statusText);
}
});
}
答案 0 :(得分:2)
仅仅因为您的数据库返回true或false并不意味着CheckUser()也会返回它。
这里有几个选项:
要么在CheckUser中创建局部变量,要使Ajax调用同步,在成功函数中将局部变量设置为response.d,然后返回该局部变量。
另一种选择是使用Deferred对象并使您的submithandler Ajax调用等待Checkuser Ajax调用返回;
第三个选项是,如果尚未创建用户,则在CheckUser Ajax调用中通过成功回调调用create ajax调用。
我建议使用选项2或3,因为选项1不是用户友好的。