gpt4 book ai didi

javascript - Ajax 回调在函数调用后触发

转载 作者:行者123 更新时间:2023-11-30 20:20:03 24 4
gpt4 key购买 nike

您好,在日期输入更改事件时调用的函数中有一个 ajax 调用,以检查日期是否已被用户使用。点击功能完成后,Ajax 调用成功。

我如何获得成功结果并继续使用 #datepicker 更改功能,因为我需要 json 结果用于其余功能。

控制者

public ActionResult IsDateAvailable(DateTime date, int Id) {

var dateAvailable = !(_context.Trading.Any(t => t.uId == Id && t.TradingDate == date));

if (!(dateAvailable)) {
return Json(new {
status = false, msg = "This date already exists."
});
}

return Json(new {
status = true
});
}

JavaScript

$(document).ready(function() {
var message;
var isDateValid;

function CheckDate(para) {
var dateValid;
var mesg;

return $.ajax({
url: '@Url.Action("IsDateAvailable", "Trading")',
type: "GET",
data: para,
dataType: "json",
success: function(data) {
if (!(data.status)) {
message = data.msg;
} else {
isDateValid = true;
}
},
error: function(xhr, httpStatusMessage) {
alert(xhr + httpStatusMessage);
}
});
}

$("#datePicker").change(function() {
$("#alert").css({
'display': 'none'
});

if (Id == 0) {
$("#alert").attr('class', 'alert alert-danger');
$("#alert").text('Please select a User.');
$("#alert").show();

return false;
}

var date = $(this).val();

var para = {
date: date,
Id: Id
};
CheckDate(para);

if (isDateValid) {
$("#btnAdd").show();
} else {
$("#btnAdd").css({
'display': 'none'
});
$("#alert").attr('class', 'alert alert-danger');
$("#alert").text(message);
$("#alert").show();
}

});
});

最佳答案

你应该转向异步。更改您的代码以与这些匹配:

.
.
.
function CheckDate(para) {
return new Promise((resolve, reject) => {
return $.ajax({
url: '@Url.Action("IsDateAvailable", "Trading")',
type: "GET",
data: para,
dataType: "json",
success: function(data) {
if (!(data.status)) {
message = data.msg;
} else {
isDateValid = true;
}
resolve();
},
error: function(xhr, httpStatusMessage) {
alert(xhr + httpStatusMessage);
reject();
}
});
}
.
.
.
checkDate(para).then(res => {
if (isDateValid) {
$("#btnAdd").show();
} else {
$("#btnAdd").css({
'display': 'none'
});
$("#alert").attr('class', 'alert alert-danger');
$("#alert").text(message);
$("#alert").show();
}
}).catch(err => { /* do something */ });

关于javascript - Ajax 回调在函数调用后触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51542893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com