Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

david_carlos

duvida no ajax jquery

Mensagens Recomendadas

david_carlos

Boas, tenho aqui uma pagina que me faz uma acualizaçao de uma div. o que a pagina tem. Mostras as fotos que o projecto tem dpois da para fazer upload de uma nova foto na qual é enviado o id por ajax para a pagina php para me mostrar um select com as fotos todas incluindo a ultina.

so que o select que faço nao me mostra a ultima foto o que estou a errar

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Aquilo que estás a errar é uma boa pergunta. Só o facto de não se saber como estás a fazer é que torna difícil responder à pergunta.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
david_carlos

então eu tenho este código

index:

<?php
$id_projecto = $row['id_projectos'];
?>
<script type="text/javascript">

$(document).ready(function()
{
$("#submit-btn").click(function(){

var id_pro = '<?=$id_projecto?>';

  $.ajax({
  type: "POST",
  url: 'teste_fotos.php',
  data: {id:id_pro},
  success:function(data){
   console.log(data);
   $(".global2").hide();
   $(".global").html(data);


  }


  });

});
});

</script>
<div class="window" id="janela1">
<div class="global">
  <a href="#" class="fechar"  style=" color:#000000">X Fechar  falta apresentar depois upload </a>


  <a href="#" onclick="javascript: exibe('upload-wrapper');" ><img src="images/add.png" width="20" height="20" ></a>

  <div id="upload-wrapper" style="display: none;">
  <div align="center">
  <form action="processupload.php?id=<?php echo $row['id_projectos'];?>" method="post" enctype="multipart/form-data" id="MyUploadForm" class="form">

  <input name="FileInput" id="FileInput" type="file"  />
  <input type="submit"  id="submit-btn" value="Upload"  />
  <img src="images/ajax-loader.gif" id="loading-img" style="display:none;" alt="Please Wait" width="100"  height="100"/>
  </form>
  <div id="progressbox" ><div id="progressbar"></div ><div id="statustxt">0%</div></div>
  <div id="output"></div>
  </div>
 </div>
<div class="global2">
<?php 

 #echo "<p style='color:red;'>".$row['id_projectos']."</p>";
$id_projecto =$row['id_projectos'];
$sqlteste = "select * from fotos WHERE id_projectos='$id_projecto'";
$queryteste = mysql_query($sqlteste);

$cont = "0";
  echo "<table border=1 ><tr>";
//Inicia a tabela
while($row = mysql_fetch_assoc($queryteste)){ //Loop até encontrar o resultado desejado(talvez não seja isso que está escrito).
if($cont == "3"){ //Se a variável possuir valor 3, fecha a linha atual e inicia outra linha(da tabela) e retorna o valor da variável para zero.
   echo "</tr><br><tr>";

$cont = "0";
}
echo "<td align=center width=\"180\" oncontextmenu=\"return false\" class=\"show\">
<img src="."img/fotos/".$row['foto']." width=\"120\" height=\"90\" >
<a href=\"#\" id=".$row['id_fotos']." class=\"delete\" title=\"Delete\"><img src=\"images/delete.png\"   width=\"20\" height=\"20\" /></a><br>"; //ao click imagem de marca  cria url
echo "</td>"; //Até aqui simplesmente escreve a célula.
$cont++; //Incrementa 1 na variável
}
echo "</tr></table>"; //Após o loop, a tabela é fechada.
?>
</div></div>

PHP que ira actualizar

<?php include("mysql.php");
if(isset($_POST['id'])){
$id_projecto = $_POST['id'];#"119";
echo $id_projecto;
$sqlteste = "select * from fotos WHERE id_projectos='$id_projecto'";
$queryteste = mysql_query($sqlteste);

$cont = "0";
  echo "<table border=1 ><tr>";

//Inicia a tabela
while($row = mysql_fetch_assoc($queryteste)){ //Loop até encontrar o resultado desejado(talvez não seja isso que está escrito).
if($cont == "3"){ //Se a variável possuir valor 3, fecha a linha atual e inicia outra linha(da tabela) e retorna o valor da variável para zero.
   echo "</tr><br><tr>";

$cont = "0";
}
echo "<td align=center width=\"180\" oncontextmenu=\"return false\" class=\"show\">
<img src="."img/fotos/".$row['foto']." width=\"120\" height=\"90\" >
<a href=\"#\" id=".$row['id_fotos']." class=\"delete\" title=\"Delete\"><img src=\"images/delete.png\"   width=\"20\" height=\"20\" /></a><br>"; //ao click imagem de marca  cria url
echo "</td>"; //Até aqui simplesmente escreve a célula.
$cont++; //Incrementa 1 na variável
}
echo "</tr></table>"; //Após o loop, a tabela é fechada.
}else{
echo "NAO";
}
?>

podem me dar uma ajuda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Não sei bem por onde começar. Mas vamos por partes:

Tu tens um form cujo formato indica que pretendes fazer um POST. Ao mesmo tempo, criaste um bind com o jQuery para, quando clicares no botão de submit, fazeres um POST via ajax que eu não percebo muito bem para que serve. Como tu não impediste que a form fosse submetida no click ou num bind ao submit da form, vais estar a fazer duas chamadas ao servidor. Uma que faz o upload (o form submit) e outra que é um POST ao teste_fotos.php.

Ora, o upload através do form e o pedido no click vão acontecer os dois ao mesmo tempo. Não me parece que seja isso que pretendes. Para além disso, como estás a permitir o submit da form, o upload do ficheiro vai causar um refresh da tua página, o que impede a tua tentativa de utilizares chamadas ajax para apresentares partes da página sem fazeres um refresh completo.

Ou seja, para poderes fazer o que pretendes, parece-me que precisas de controlar o upload também por ajax e impedir que a form seja submetida pelos meios naturais do browser, fazendo bind e fazendo um preventDefault().

Felizmente que existe uma biblioteca muito boa para gerir os uploads via ajax, por isso não precisas de reinventar a roda. Podes encontra-la no seguinte url:

https://github.com/blueimp/jQuery-File-Upload


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.