gpt4 book ai didi

javascript - 在导航到另一个页面之前,如何确保函数已完全执行?

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

我正在使用网络服务删除某些记录。 jquery ajax请求写在超链接的onclick中。当我使用 firebug 逐行执行脚本时,它会被删除,否则不会。有人遇到过这样的情况吗?请帮忙

代码示例:

 $(".target").click(function() { 
func(); //This function should be executed completely before navigating to another page
});


var func = function() {
var items = $("#flag").find('td input.itemClass');
id = items[0].value;
var status = items[1].value;
var type = items[2].value;
var params = '{' +
'ID:"' + id + '" ,Type:"' + type + '" ,Status:"' + status + '"}';
$.ajax({
type: "POST",
url: "WebMethodService.asmx/DeleteItem",
data: params,
//contentType: "plain/text",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$("#deleteNotificationMessage").val("Item has been removed"); // keep a separate label to display this message
}

//Event that'll be fired on Success

});


}

最佳答案

jQuery ajax 函数返回延迟对象,因此我们返回$.ajax。那么你应该使用延迟。 done当 AJAX 完全完成时执行回调。当 AJAX 完成后,使用 JS 导航离开:

var func = function() {
...
return $.ajax({...}); //return our ajax deferred
}

$(".target").click(function() {
var target = this; //preserve "this" since this in the callback may be different
func().done(function(){ //our done callback executed when ajax is done
window.location.href = target.href; //assuming .target is a link
});
return false; //prevent the natural click action
});

关于javascript - 在导航到另一个页面之前,如何确保函数已完全执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10480232/

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