我在使用jQuery Ajax的按钮点击事件上使用验证功能。如果返回值为1,则此方法显示警告消息,否则返回true并转到button方法。 验证和警报显示事物和块按钮方法工作正常。如果不想做任何事情并且返回true则按下按钮方法不起作用。
这是我的jQuery ajax方法。
$(function () {
$('#customerSubmit').on('click', function (event) {
debugger;
event.preventDefault();
var title = $('#Title').val();
var firstName = $('#FirstName').val();
var phoneNo1 = $('#PhoneNo1').val();
var Email = $('#Email').val();
var address1 = $('#AddressLine1').val();
$.ajax({
type: 'POST',
url: '/Customer/IsExistCustomer',
data: { FirstName: firstName, Title: title, PhoneNo1: phoneNo1, AddressLine1: address1, Email: Email },
success: function (data) {
if (data == 1) {
alert('This Customer Already Exist');
return false;
}
else {
return true;
}
}
});
});
});
请帮我解决这个问题,
感谢。
答案 0 :(得分:1)
您无法从异步操作同步返回。
这是关于一般问题的良好质量保证:How do I return the response from an asynchronous call?
对于您的特定问题,您应该使用按钮而不是submit元素,并在回调中执行操作(提交表单):
$(function () {
$('#customerSubmit').on('click', function (event) {
var form = this.form; // <- depends on your DOM
var title = $('#Title').val();
var firstName = $('#FirstName').val();
var phoneNo1 = $('#PhoneNo1').val();
var Email = $('#Email').val();
var address1 = $('#AddressLine1').val();
$.ajax({
type: 'POST',
url: '/Customer/IsExistCustomer',
data: { FirstName: firstName, Title: title, PhoneNo1: phoneNo1, AddressLine1: address1, Email: Email },
success: function (data) {
if (data == 1) {
alert('This Customer Already Exist');
}
else {
form.submit(); // <- now submit the form
}
}
});
});
});
答案 1 :(得分:0)
代码中的一些问题:
恕我直言,您应截取'submit'事件处理程序,preventDefault(),并执行ajax调用以提交表单,并处理错误以向用户提供某种反馈。
如果你绝对想要对服务器做两个请求而不是一个(一个要检查,一个要提交),你可以在'success'处理程序中进行第二次ajax调用:
$.ajax({
type: 'POST',
url: '/Customer/IsExistCustomer',
data: { FirstName: firstName, Title: title, PhoneNo1: phoneNo1, AddressLine1: address1, Email: Email },
success: function (data) {
if (data !== 1) {
$.ajax({
type: $(form).attr("method"),
url: $(form).attr("action"),
data: $(form).serialize(),
success: function (data) {
}
});
}
}
});