我有一个实现一些httprequest的功能。当所有这些请求完成时,我需要刷新父窗口并关闭当前窗口。 但是现在当前窗口在完成请求之前关闭,并且请求未正确完成。 这是我的代码:
<script>
function save()
{
$.when( insert() ).done(function() {
opener.location.reload();
window.close();
});
}
function insert()
{
$('select').each(function () {
var idTraslado = $(this).attr("id");
var accion = $(this).val();
//the page realizes mysql updates.
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","trasladosEliminarMultipleGuardar.php?idTraslado="+idTraslado+"&accion="+accion+"&motivo="+motivo,true);
xmlhttp.send();
});
}
</script>
答案 0 :(得分:1)
你必须使用promises,否则when
在你的代码中没用:
function save()
{
$.when(insert()).done(function () {
opener.location.reload();
window.close();
});
}
function insert()
{
var promises = [];
$('select').each(function () {
var deferred = $.Deferred();
var idTraslado = $(this).attr("id");
var accion = $(this).val();
//the page realizes mysql updates.
xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function (response) {
deferred.resolve(response);
};
xmlhttp.open("GET", "trasladosEliminarMultipleGuardar.php?idTraslado=" + idTraslado + "&accion=" + accion + "&motivo=" + motivo, true);
xmlhttp.send();
promises.push(deferred.promise());
});
return promises;
}