Posicionamento de fotos e salvar ordem.
Bom dia pessoal.
Estou com um problema para salvar a ordem das fotos de uma galeria.
Utilizo um jQuery que possibilita ao usuário posicionar os elementos dentro de uma especificada DIV.
Após este posicionamento o usuário deve clicar em um botão para salvar a atual posição das fotos.
Acontece que quando são poucas fotos ele grava no banco sem problemas, mas quando são mais de 10 fotos ele não consegue gravar todas.
O código que utilizo para fazer a varredura e salvar a ordem é o seguinte:
//função que salva a ordem das fotos
function salvaOrdem(){
ordem = 0;
sucesso = 0;
erro = 0;
//Aqui o jQuery corre o código procurando os elementos <li>
$('li').each(function() {
//inicia a contagem da ordem
ordem++;
//pega a id da foto
$this = $(this);
idFot = $this.attr('idbanco');
//inicia o envio de uma requisição ajax para gravar a ordem no banco
var req = null;
Url = "grava_ordem.php?id="+idFot+"&ordem="+ordem;
if(window.XMLHttpRequest){
req = new XMLHttpRequest();
if (req.overrideMimeType)
{
req.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject)
{
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e)
{
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
req.onreadystatechange = function(){
if(req.readyState == 4){
if(req.responseText=='sucesso'){
sucesso++;
}else{
erro++;
}
}
};
req.open("GET", Url, true);
req.send(null);
});
totalFotos = document.getElementById('qtdFot').value;
//se a variavel ordem chegar a mesma quantidade de fotos ele intende que finalizou a contagem
if(ordem==totalFotos){
setTimeout('window.location.reload()', 100);
}
}
O problema é que quando eu inicio a função salva_ordem() o Java Script corre o código rapidamente e não espera o ajax retornar "sucesso" ou "erro" para executar o próximo elemento.
Por isso de funcionar com poucas fotos, que na verdade gera poucos elementos.
Preciso saber como executar 1 a 1 esperando o resultado do Ajax.
Muito obrigado. Caso não entenda o que escrevi informe o que precisa saber para me auxiliar, não sou muito bom em explicações.
Discussão (2)
Carregando comentários...