我正在努力解决我正在开发的网络应用程序的概念问题。该应用程序允许用户拖放 DOM 元素(如便笺、列表、图像)。您将元素从菜单拖到一张纸上。一旦你删除了一个,应用程序会向服务器发出 AJAX 调用以保存该元素(位置、颜色等)。服务器以一个 id 回答,然后将其作为其 id 属性保存到 DOM 元素中。当您再次移动该元素时,将进行相同的 AJAX 调用,但使用其 id。
但问题是,如果我快速将一个新元素放在放置区域上然后再次移动它,它会创建重复的条目,因为第一个 AJAX 调用尚未完成,第二个调用没有 id(因为它必须来从服务器)。
这是用于保存元素的 javascript 代码的简化示例:
function saveObject(object,action){
var params = {
x : object.position().left,
y : object.position().top,
w : object.width(),
h : object.height(),
};
if(object.attr("id")){
params.id = object.attr("id");
}
$.post("/save_object",params,function(data){
if(data.success){
object.attr("id",data.data);
}
});
}
在服务器端,我只检查一个 id,然后我使用该 id 运行“创建”函数或“修改”函数。
这是非常具体的,我看过很多关于 ajax 复制的帖子,但在这里设置标志无济于事。我无法阻止发出 AJAX 请求,因为它不应该阻止任何 UI 元素并且我不想丢失任何保存事件。我有一些限制要坚持,因为此页面是动态的,并且同一页面上的用户可以看到彼此用户的事件。
在这一点上,我将感谢任何答案。