Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda Com Micoxupload


FeRRuGe

Pergunta

Boa tarde, galera!

Como já disse em outro tópico, to fazendo uma intranet meio gigante em Ajax e to usando a função do Micox (reafirmo, os créditos foram mantidos, uhahuahuahuhua) pra upload assíncrono de arquivos. Tb já disse q sou totalmente novato em Javascript (eu axo q disse), e to apanhando aki pra faze uma coisa q talvez seja simples: preciso executar uma função (se possível, passada por parâmetro na função do Micox) DEPOIS que o arquivo for completamente enviado, ou seja, depois que o formulário terminar o submit completo. Eu preciso atualizar uma DIV de listagem depois q o arquivo termina de ser enviado e devidamente gravado no banco... Eu fiz algumas gambiarras aki, como tentar dar um sleep (php) pra parar um pouco a execução do script de gravação e atualização... Até funciona, mas com um arquivo um pouco maior, não fica bom, porque a listagem atualiza antes do arquivo ser gravado...

Por favor, alguma alma caridosa pode me ajudar? Tem alguma parte no script do Micox onde eu configuro eventos pós-submit? Como eu mando uma função por parametros? hehehehehe

Agradeço desde já a importante ajuda!

[]´s :rolleyes:

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Velho, posta a parte do código onde está exatamente seu problema e o quer fazer pra facilitar.

Tipo, não sei o código do Micox decor e também não dá pra eu ficar buscando nos sites os códigos copiar e tal...tem gente que trabalha nesse mundo rsrs.

Se puder simplificar ao máximo nosso trabalho seria sensacional.

Akeleabrassssss

Link para o comentário
Compartilhar em outros sites

  • 0

function micoxUploadAvatar(form,url_action,id_elemento_retorno,html_exibe_carregando,html_erro_http){

//testando se passou o ID ou o objeto mesmo
form = typeof(form)=="string"?$m(form):form;

var erro="";
if(form==null || typeof(form)=="undefined"){ erro += "O form passado no 1o parâmetro não existe na página.\n";}
else if(form.nodeName!="FORM"){ erro += "O form passado no 1o parâmetro da função não é um form.\n";}
if($m(id_elemento_retorno)==null){ erro += "O elemento passado no 3o parâmetro não existe na página.\n";}
if(erro.length>0) {
  alert("Erro ao chamar a função micoxUpload:\n" + erro);
  return;
}

//criando o iframe
var iframe = document.createElement("iframe");
iframe.setAttribute("id","micox-temp");
iframe.setAttribute("name","micox-temp");
iframe.setAttribute("width","0");
iframe.setAttribute("height","0");
iframe.setAttribute("border","0");
iframe.setAttribute("style","width: 0; height: 0; border: none; display: none;");
/* Não usei display:none pra esconder o iframe
    pois tem uma lenda que diz que o NS6 ignora
    iframes que tenham o display:none */

//adicionando ao documento
form.parentNode.appendChild(iframe);
window.frames['micox-temp'].name="micox-temp"; //ie sucks

//adicionando o evento ao carregar
var carregou = function() {
   removeEvent( $m('micox-temp'),"load", carregou);
   var cross = "java script: ";
   cross += "window.parent.$m('" + id_elemento_retorno + "').innerHTML = document.body.innerHTML; void(0); ";
  
   $m(id_elemento_retorno).innerHTML = html_erro_http;
   $m('micox-temp').src = cross;
   //deleta o iframe
   setTimeout(function(){ remove($m('micox-temp'))}, 250);
  }
addEvent( $m('micox-temp'),"load", carregou)

//setando propriedades do form
form.setAttribute("target","micox-temp");
form.setAttribute("action",url_action);
form.setAttribute("method","post");
form.setAttribute("enctype","multipart/form-data");
form.setAttribute("encoding","multipart/form-data");
//submetendo
form.submit();

//se for pra exibir alguma imagem ou texto enquanto carrega
if(html_exibe_carregando.length > 0){
  $m(id_elemento_retorno ).innerHTML = html_exibe_carregando;
}

}

Desculpe o incoveniente... Mas ta ae a função.. Mesmo tendo aquele form.submit();, eu gostaria de saber como eu faço pra ter certeza que o arquivo já foi totalmente enviado... O q tah acontecendo é q (eu axo) o submit é enviado, e a função continua a ser executada antes do arquivo ser totalmente enviado, entende? Eu gostaria de saber se em alguma parte desse código tem alguma função q só é executada depois do submit completo, ou onde eu devo colocar as novas linhas de codigo para que seja executada uma função após isso...

Será que alguém pode me ajudar?

Obrigado!

Editado por FeRRuGe
Link para o comentário
Compartilhar em outros sites

  • 0

Que estranho...

Cara, já que você tava mexendo no código a mais tempo, seria burrice da minha parte perder tempo analisando o código, então vou partir do princípio de que esteja certo na sua suspeita.

Então deve se concentrar nessa parte do código:

var carregou = function() {
   removeEvent( $m('micox-temp'),"load", carregou);
   var cross = "java script: ";
   cross += "window.parent.$m('" + id_elemento_retorno + "').innerHTML = document.body.innerHTML; void(0); ";
  
   $m(id_elemento_retorno).innerHTML = html_erro_http;
   $m('micox-temp').src = cross;
   //deleta o iframe
   setTimeout(function(){ remove($m('micox-temp'))}, 250);
  }
addEvent( $m('micox-temp'),"load", carregou)

Tenta remover a linha onde ele usa o setTimeout para remover o iframe. Tipo, só comenta essa linha.

Se você estiver certo, então o problema de carregamento que comentou no primeiro post irá acabar. Sabendo que é esse o problema a gente pensa em uma forma de desaparecer com o iframe na hora certa para o seu caso.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...