Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Maretti

POST no AJAX

Recommended Posts

Olá pessoal...

 

meu problema é o seguinte...

 

Sou iniciante no Ajax... mas até q tenho me virado bem...

 

Mas tudo que fiz até aqui usei o método GET na hora de chamar a função Open.

 

Mas agora me deparei com um problema:

 

A idéia é que o usuário enviei uma foto para o servidor... sendo assim tenho dois arquivos, um chama-se be_cadastro02.php e outro be_grava_cad02.php

 

Quando o internauta entra na página cai direto no arquivo be_cadastro02.php onde há um campo File_field para que ele possa clicar em "Procurar" e indicar a imagem que ele quer enviar.

 

Sem usar o método Ajax o sistema estava funcionando bem!... pq eu enviava as informações do be_cadastro02.php ao be_grava_cad02.php utilizando o método POST do FORM com um submit... e via PHP eu fazia o PUT usando FTP no segundo arquivo.... sem problemas!

 

O problema surgiu quando coloquei o ajax na parada!

 

No be_grava_cad02.php (q é o arquivo q vai enviar a foto para o servidor) eu preciso receber essas informações:

$arqLocal = $_FILES[campo_upload][name];

$arqRemoto = $_FILES[campo_upload][tmp_name];

 

O problema é q não sei como passa-las via Ajax....

 

Será que alguém pode me ajudar?!

 

Segue meus códigos:

be_cadastro02.php:

function envia(var_cod){
	MM_showHideLayers('LStatus','','show');

	var xmlHttp;
	if(window.ActiveXObject){
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	} else if (window.XMLHttpRequest){
		xmlHttp = new XMLHttpRequest();
	}
	
	xmlHttp.open("GET", "http://www.micropinhal.com.br/balcao_empregos/cad_online/be_gravar_cad02.php?codigo=" + var_cod, true);
		xmlHttp.onreadystatechange = callback;
		xmlHttp.send(null);

		function callback(){
			if(xmlHttp.readyState == 1){
				LStatus.style.top = document.body.scrollTop;
				LStatus.style.left = (window.screen.availWidth-260);				
				MM_setTextOfLayer('LStatus','','<center><font face="arial" size=2><B>Enviando Imagem...<B></font></center>')										
			}

			if(xmlHttp.readyState == 4){
				if(xmlHttp.status == 200){
					if(xmlHttp.responseXML){
						var dataArray   = xmlHttp.responseXML.getElementsByTagName("status");	
						var vitem = dataArray[0];
						var vresultado =  vitem.getElementsByTagName("result")[0].firstChild.nodeValue;						
						if (vresultado == "OK"){								
							MM_setTextOfLayer('LStatus','','<center><font face="arial" size=2><B>Gravado!<BR>Clique no link "Avançar para a próxima fase (Escolaridade)" <BR> ou escolha outra imagem...<B></font></center>');							
						}else if (vresultado == "nao_jpg") {
							MM_setTextOfLayer('LStatus','','<center><font face="arial" size=2><B>ERRO - O arquivo não é uma imagem JPG válida! <BR> Escolha outra imagem.<B></font></center>');
						}else if (vresultado == "nao_escolheu_imagem") {
							MM_setTextOfLayer('LStatus','','<center><font face="arial" size=2><B>ERRO - Você não escolheu a imagem! <BR> Escolha uma imagem por favor.<B></font></center>');
						}												
					}
				} else if (xmlHttp.status == 404){
					alert("Erro ao gravar dados!");				
				}
			} // IF readyState == 4		
		}//FUNCTION CALLBACK 
}

be_grava_cad02.php:

<?
session_start();

if(empty($_SESSION["cod_candidato"])) {
	$_SESSION["cod_candidato"] = $_GET["codigo"];
}
echo("Código = " . $_SESSION["cod_candidato"]);




//---------------------------------- INÍCIO DA CONEXÃO COM BANCO DE DADOS-----------------------------------------
//conexao com o banco
$conexao = mysql_connect('mysql1.micropinhal.com.br','xxx','yyy'); 
//seleciona o banco
$banco = mysql_select_db('micropinhal',$conexao); 
//---------------------------------- FIM DA CONEXÃO COM BANCO DE DADOS-----------------------------------------

//---------------------------------- INÍCIO DA CONEXÃO FTP--------------------------------------------
//DADOS PARA CONEXÃO	  
$server  = "www.micropinhal.com.br";   
$user = "xxx";	   
$pass   = "yyy"; 

//CONECTA AO FTP
$con = ftp_connect($server) 
	   or die ("ERRO AO CONECTAR AO SERVIDOR DE FTP ".$server);
 
//TENTA EFETUAR O LOGIN COM USUÁRIO E SENHA DE ACESSO
if(@!ftp_login ($con, $user, $pass) ) {
	  echo "Não foi possível efetuar a conexão. Verifique o usuário e a senha de acesso.";
}

$troca_dir = ftp_chdir($con, "www/balcao_empregos/cad_online/fotos");
if(!$troca_dir){
	echo("Erro ao acessar pasta!");
}
//---------------------------------- FIM DA CONEXÃO FTP--------------------------------------------

//ROTINA PARA UPLOAD----------------------------------------------------------------------------------------------------
   if ($_FILES[campo_upload][name] <> "") {
   //Pega a extenção do arquivo
   $ext = explode(".",$_FILES[campo_upload][name]);	
	  if(($ext[1] == "jpg") or ($ext[1] == "JPG")){
		 //RECEBE O ARQUIVO
		 $arqLocal = $_FILES[campo_upload][name];	 
		 $arqRemoto = $_FILES[campo_upload][tmp_name]; 		 
 		 
		 //DEFINE O NOME DA FOTO REDIMENSIONADA
		 $nome_foto = "img_cod" . $_SESSION["cod_candidato"] . ".jpg";

		 //ALIMENTA UM ARRAY COM OS NOMES DOS ARQUIVOS DESTA PASTA.
		 $arr_arq = ftp_nlist($con, ""); 	 

		 if($arr_arq == false){
			//SE RESULTAR EM FALSE É PQ A PASTA ESTÁ FAZIA
			//SE A PASTA ESTÁ VAZIA NÃO HÁ O RISCO DE JÁ EXISTIR UM ARQUIVO COM O MESMO NOME.
			ftp_put($con, ftp_pwd($con) . "/" . $arqLocal, $arqRemoto, FTP_BINARY);
			$arr_arq = ftp_nlist($con, "");
			  //ATUALIZA TABELA
			$sql = mysql_query("UPDATE be_candidatos_online SET foto = '$nome_foto' WHERE codigo = '$_SESSION[cod_candidato]'");		 
 			$erro = 0;
		 } else {  
			//SE A PASTA NÃO ESTIVER VAZIA...
			if (array_search($arqLocal, $arr_arq) == false){
			   //PESQUISA SE HÁ ALGUM ARQUIVO COM O MESMO NOME DO ARQUIVO A SER POSTADO.
			   // SE DER FALSE, É PORQUE NÃO HÁ NENHUM ARQUIVO COM ESSE NOME.
			   ftp_put($con, ftp_pwd($con) . "/" . $arqLocal, $arqRemoto, FTP_BINARY);
			   $arr_arq = ftp_nlist($con, ""); 	 
				 //ATUALIZA TABELA
			   $sql = mysql_query("UPDATE be_candidatos_online SET foto = '$nome_foto' WHERE codigo = '$_SESSION[cod_candidato]'");		 
   	 		   $erro = 0; 
			} else {
   			   //SE NÃO DER FALSE, É PORQUE JÁ EXISTE UM ARQUIVO COM ESSE NOME. 
			   $erro = 1;
			}
		 }
		 if ($erro == 0){ //SE O ARQUIVO FOI ENVIADO
		 	echo("www/balcao_empregos/cad_online/fotos/" . $arqLocal);
		 	ftp_rename ( $con, $arqLocal , $nome_foto );
			
			$conteudo = '<?xml version="1.0" encoding="ISO-8859-1"?>';
			$conteudo .= "\n";
			$conteudo .= "\n";	
			$conteudo .= "<xml_status>";
			$conteudo .= "\n";
	
				$conteudo .= "<status>";
					$conteudo .= "\n";		
					$conteudo .= "<result>OK</result>"."\n";
					$conteudo .= "\n";
				$conteudo .= "</status>";

			$conteudo .= "\n";		
			$conteudo .= "</xml_status>";
			$conteudo .= "\n";	
			
			//CABEÇALHO
			Header("Content-type: application/xml; charset=iso-8859-1"); 

			echo($conteudo);
		 }//FECHA IF DA VERIFICAÇÃO SE O ARQUIVO FOI ENVIADO
	  } else {
			$conteudo = '<?xml version="1.0" encoding="ISO-8859-1"?>';
			$conteudo .= "\n";
			$conteudo .= "\n";	
			$conteudo .= "<xml_status>";
			$conteudo .= "\n";
	
				$conteudo .= "<status>";
					$conteudo .= "\n";		
					$conteudo .= "<result>nao_jpg</result>"."\n";
					$conteudo .= "\n";
				$conteudo .= "</status>";

			$conteudo .= "\n";		
			$conteudo .= "</xml_status>";
			$conteudo .= "\n";		
			//CABEÇALHO
			Header("Content-type: application/xml; charset=iso-8859-1"); 

			echo($conteudo);
	  }//FIM DO IF DE EXTENÇÃO DO ARQUIVO
   } else {
		$conteudo = '<?xml version="1.0" encoding="ISO-8859-1"?>';
		$conteudo .= "\n";
		$conteudo .= "\n";	
		$conteudo .= "<xml_status>";
		$conteudo .= "\n";
			$conteudo .= "<status>";
				$conteudo .= "\n";		
				$conteudo .= "<result>nao_escolheu_imagem</result>"."\n";
				$conteudo .= "\n";
			$conteudo .= "</status>";
		$conteudo .= "\n";		
		$conteudo .= "</xml_status>";
		$conteudo .= "\n";			   
		//CABEÇALHO
		Header("Content-type: application/xml; charset=iso-8859-1"); 

		echo($conteudo);
	}
//FIM - ROTINA PARA UPLOAD-----------------------------------------------------------------------------------------------


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oooo.. kra.. valeu pela dica!

 

Fiz aqui... e funcionou de boa!

 

Mas ainda não cheguei onde eu queria...

 

no tópico q você me indicou:

eae, então basicamnete eh um form e iframe rs..

 

CODE

<form target = "iUpload" enctype="multipart/form-data" method = "post" action = "upload.php">

<input type = "file" name = "img">

<input type = "submit" value = "GO!"/>

</form>

<iframe id = "iUpload" name = "iUpload" style = "border:0px;width:0px;height:0px"></iframe>

 

 

no form você coloca no target o nome do iframe, no action sua pagina para fazer o upload...eh isso ai...t+

Mas como eu vou verificar se a imagem já foi enviada ou não?!

 

Pra dar um retordo pro usuário com pelo menos uma mensagem de "enviando"....

 

Alguém tem alguma idéia?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.