Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite a todos.
Ainda iniciando no mundo PHP, mais uma vez estou com uma dúvida "Cruel"...rs...mas que com certeza pode ajudar a mais membros a tirar suas dúvidas pois com certeza muitos ainda vão se deparar com uma situação destas.
Preciso saber como passar uma variável do PHP para ser lido em um outro arquivo em um script Ajax.
Problema: estou no arquivo leitura.php e este (via script Ajax) envia dados para serem processados em um arquivo chamado processa.php. Este arquivo processa.php lê e trata os dados que nele mesmo ficam armazenados na variável $arquivo. Preciso que o conteúdo desta variável $arquivo volte para ser lido no script Ajax do arquivo leitura.php.
OBS 1: Não existe formulário de postagem no arquivo processa.php
OBS 2: Este arquivo processa.php recebe dados de fotos (imagens) e é o nome destas imagens que o script Ajax do arquivo leitura.php deve receber.
Nossa será que estou explicando direito isso? Desculpem qualquer exagero meu ou se eu estiver errado na minha forma de expressão mas isso tá me deixando doido.
Desde já agradeço por qualquer colaboração e pela oportunidade.
Muito obrigado pela dica.
Vou colocar alguns códigos para ver se você consegue entender melhor o que quero fazer...
arquivo leitura.php
(...)
<script type="text/javascript">
var atualizar = new funcaoatualiza('atualiza', 'atualizaarquivos', {
(...)
script: 'sistemacms/mod2/processa.php?id=<?php echo $id_imagem; ?>',
(...)
fileDescription: 'JPEG Images',
fileExtensions: '*.jpg;*.jpeg',
(...)
onComplete:function(envio)
{
(...)('<img src="uploadfotos/'+aquiestaaminhaduvida+'" width="64" height="48" />'); // Aqui está a dúvida!
}
});
function envioDescricao()
{
var descreva = document.getElementById("txtdescreva").value;
if (descreva.length)
{
atualizar.info({
Descricao: descreva
});
atualizar.funcaoEnvio();
}
else
alert("Escolha um comentário para as fotos.");
}
</script><?php
include("../config.php");
$cadastro= $_GET['id'];
$descricao= addslashes(iconv("UTF-8", "ISO-8859-1", $_POST['Descricao']));
$pegaarquivos = $_FILES['Filedata'];
$nomearquivo= $pegaarquivos['name'];
(...)
$extensaoimagem = end(explode(".", $nomearquivo));
$arquivo_modificado = md5($nomearquivo)."_".$nametemp.".".$extensaoimagem;
/*
preciso passar esta variaval = $arquivo_modificado
*/
if (!empty($cadastro) && !empty($pegaarquivos)){
$consulta= "INSERT INTO eventos (cad, nome, descricao) VALUES ('$cadastro, '$arquivo_modificado', '$descricao)";
mysql_query($consulta);
$diretorio= $pegaarquivos['tmp_name'];
$novo_diretorio= "../uploadfotos/".$arquivo_modificado;
move_uploaded_file($diretorio, $novo_diretorio);
(...)/ preciso passar esta variável, $arquivo_modificado /
simples:
echo $arquivo_modificado;
o objeto xmlHttpResponse lê o arquivo processado como texto (ou o mime-type enviado).
como um HTML é um text/html, é possível tratar os dados de saída do PHP processado como texto puro e trabalhar livremente
já tentei isso, mas a foto não aparece...não le a foto sabe.
qual deve ser o conteúdo da variável?
Sabe, não sei o que posso estar esquecendo...mas o conteúdo da variável é o nome da imagem, só isso. Funciona tudo tão bem mas na hora de ver a miniatura em tela durante o processo do upload ...aff...nada
Exemplo: 20828395_162207360384_thumb.jpg
rss...fiz assim para não repetir...
até a parte onde envia a requisição AJAX você já pegou? ja aprendeu???
entende pra que serve o onreadystatechange e as checagens de readyState == 4 e status == 200 ????
se sim, vamos continuar a partir deste ponto:
no HTML crie uma DIV com o ID ajax
bla bla bla bla bla bla
<div id="ajax"></div>
bla bla bla bla bla bla
agora no javascript, mais precisamente onde você está tratando a resposta AJAX, faça:
xhr.onreadystatechange = function() {
if(this.readyState == 4 && this.status == 200) {
thumb = document.createElement('img');
thumb.alt = 'miniatura';
thumb.src = this.responseText;
document.getElementById('ajax').appendChild(thumb);
}
}Grande Evandro, bom dia.
Olha, confesso que meu forte é mais o PHP sabe, mas estou estudando muito o AJAX.
Sabe o que eu acho que não consigo fazer? Criar os parâmetros para a comunicação com o script PHP mais precisamente com a dita variável
/ $arquivo_modificado /.
assim, tenha em mente que a propriedade .responseText apenas imprime o que seria exibido caso você abrisse o endereço normalmente no navegador (ou até mesmo bloco de notas)
como você é com XML ??? para 'viajar' dentro de uma estrutura XML com Javascript é bem facinho, mas eu recomendo que estude JSON, se você não precisar trabalhar com API multi-plataformas (onde XML ainda é o padrão e tem maior aceitação) você pode transferir os dados por JSON, é mais 'gostoso' de trabalhar...
SE ainda ficou alguma dúvida, faça o seguinte, mande o bloco de notas abrir o endereço equivalente ao http://localhost/processa.php?nome=ademirs do nosso exemplo
se você fizesse algo do tipo
minhavar = xhr.responseText o conteúdo de minhavar seria EXATAMENTE a mesma coisa que abriu no bloco de notas para a mesma requisição, obviamente
nesta, nesta e nesta postagens, eu tento dar uma explicação do uso de JSON, onde é possível por exemplo passar uma tabela de banco de dados por Javascript e fazê-la ser processada em client-side
a princípio parece complicado, mas com a prática você vai ver que não é nenhum monstro de se trabalhar.
Bom dia.
Ok, tive uma idéia aqui, assim que tiver o resultado posto aqui.
Grande abraço.
se você abrir no navegador a página processa.php e passar para a mesma os parâmetros que ela trabalha, o que você vai receber em ajax é o mesmo resultado que será exibido no navegador (via código fonte)
página leitura.php, tem uma caixa de texto onde você escreve seu nome, e envia via ajax, para o processa.php via queryString ficando assim
processa.php?nome=ademirs
o arquivo processa.php verifica se foi passado um nome, caso positivo, saúda o visitante conforme a hora:
na tela e no código fonte do navegador, haverão as seguintes informações:
Bom dia, ademirs.
é isso que será passado como retorno para seu controlador AJAX, através da propriedade .responseText
se no arquivo leitura.php, após fazer todos os processos, testes e requisições, você inserir o seguinte código
o resultado, será uma caixa de alerta contendo "Bom dia, ademirs."espero que tenha conseguido esclarecer a dúvida