【发布时间】:2023-03-03 15:49:02
【问题描述】:
我正在为此寻找解决方案: 我有一个更新应用程序中表格内容的函数。
function prev_update(cli_id){
$("#list").empty();
$("#list").append("<tr><td colspan=11><img src='images/loading.gif' alt=loading title=loading /></td></tr>");
$.ajax({
type : 'POST',
url : 'json/get.php?t=2&id='+cli_id,
dataType : 'json',
encode : true
})
.done(function(data) {
$("#list").empty();
if ((data)["prev_list"]) {
$.each((data)["prev_list"], function( i, val ) {
$( "#list" ).append(val);
});
$("#edit").hide("slow");
} else {
$("#list").append("<tr><td colspan=11> </td></tr>");
}
});
};
在另一个函数中,我正在更新表格的一行,当我完成编辑表格的一行的内容时,我启动了一个类似的函数,但在 .done 行中,我调用了 prev_update 函数,完成后我必须在更新的表格内容中按下一个按钮,以查看修改... 代码如下:
$("#prev_mod").on("click",(function( event ) {
$('#loading_img').css('display','inline');
header_print();
$.ajax({
type : 'POST',
url : 'json/post.php?mod='+$('#prev_id').val(),
data : $("#form_sog").serialize(),
dataType : 'json',
encode : true
})
.done(function(data) {
if ((data)["success"]===false) {
$('#form_edit').hide('slow');
prev_update();
$('#edit_'+$('#prev_id').val()).click();
});
});
}));
我必须等待 prev_update() 函数结束然后单击按钮,因为该按钮位于正在更新的表中。 我也尝试使用延迟对象,但它不起作用(可能是我的错误)。 我无法编辑函数 prev_update,因为它已被其他函数使用。
【问题讨论】:
-
当你说“prev_update() 函数结束”时,你到底是什么意思?你的意思是它里面的所有动画都完成了,还是你的意思是它只是运行并完成了它开始的工作?而且,既然
prev_update()无休止地调用自己,你怎么不会在这里陷入无限循环。 -
我发布的第二个代码来自另一个函数。当我说函数结束时,我的意思是函数已经完成了它开始的所有过程(ajax 请求和其他动画)
标签: javascript jquery ajax jquery-deferred