gpt4 book ai didi

javascript - 无法在闭包之外返回值

转载 作者:行者123 更新时间:2023-11-28 02:13:30 25 4
gpt4 key购买 nike

我似乎无法获取此值以将 isValid 值从下面代码片段中的 ajax 调用中传回:

    function isShortUrlAvailable(sender, args) {
var isValid = false;
$.ajax({
type: "POST",
url: "/App_Services/ShortUrlService.asmx/IsUrlAvailable",
data: "{url: '" + args.Value + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
isValid = response.d;
},
error: function (msg) {
isValid = false;
}
});

args.IsValid = isValid;
}

我确信这只是一些我忽略的闭包的简单操作。有人可以帮忙吗?

它用于 asp.net 自定义验证器。

这就是正在发生的事情:

  1. 第一行 isValid 设置为 false
  2. .ajax() 请求正确触发,如果其有效则返回 true
  3. isValid 已正确设置为 true (response.d)
  4. 当它返回到最后一行时,它再次认为 isValid 为 false

最佳答案

AJAX 方法是异步,这意味着您的值设置为 false,AJAX 调用已启动,但在发生时 args.IsValid 行被调用。只需删除变量并在每个场景中设置 args.IsValid 值即可:

function isShortUrlAvailable(sender, args) {
$.ajax({
type: "POST",
url: "/App_Services/ShortUrlService.asmx/IsUrlAvailable",
data: "{url: '" + args.Value + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
args.IsValid = response.d;
},
error: function (msg) {
args.IsValid = false;
}
});
}

关于javascript - 无法在闭包之外返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16733363/

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