【发布时间】:2012-12-29 01:32:37
【问题描述】:
我的应用程序中有两个 javascript/jquery 函数,总是有 refresh() 函数,它从数据库中获取数据并重绘前端视图。
其中一种方法是将数据发送到PHP函数中,它可以简单地插入MySQL数据库,然后对其进行编辑,在这里(它们是相同的,所以我只发布一个):
function insertedit()
{
$('.res').each(function()
{
$.post("/controller/method/",{id: id},function(data,status,xhr)
{
if(status=="success")
{
}
})
});
refresh();
}
当我尝试使用此函数插入数据时,一切正常,并且我的视图正在异步重绘,但是当我尝试使用它编辑数据时 - 我必须刷新页面才能看到更新的视图。我认为,该编辑操作比插入和我的刷新功能需要更多时间,它从 SQL 中抓取数据只是抓取旧数据(未删除的记录) - 我该如何修复它?
编辑
$(function()
{
refresh();
});
function insertedit(){
var $promises = [];
$('.res').each(function()
{
$promises.push(
$.post("/controller/metgod/",{id, id},function(data,status,xhr)
{
if(status=="success")
{
}
})
);
});
$.when.apply($, $promises).then(function() {
refresh();
});
}
【问题讨论】:
-
你应该等到所有 ajax 请求都完成后再刷新
-
我知道,但是怎么做呢?
-
使用
.detach()重新绘制的东西更快 - 你仍然可以使用 jQuery 对其进行操作,然后将其粘贴到使用.appendTo()或类似的位置,因此它不会重新绘制HTML,就在 DOM 中。 -
您将使用 $.when(),将每个 ajax 请求作为参数映射到 $.when(),然后在 .then() 上刷新。看这里的例子:stackoverflow.com/questions/5401969/…
-
还应该考虑使用所有 ID 发出一个 ajax 请求,而不是多次请求。返回 JSON 以匹配您发送的 ID 并循环