Ir para conteúdo

POWERED BY:

Arquivado

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

Giihh

Formulario (POST) Ajax PHP

Recommended Posts

Olá,

 

Estou até hoje tentando entender como funciona ajax com php, para dar refesh sem carregar a página, por exemplo tem o seguinte formulário:

<head>
	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
	<script type="text/javascript">
	jQuery(document).ready(function(){
		jQuery('#ajax_form').change(function(){
			var dados = jQuery( this ).serialize();

			jQuery.ajax({
				type: "POST",
				url: "processa.php",
				data: dados,
				success: function( data )
				{
					alert( data );
				}
			});
			
			return false;
		});
	});
	</script>
</head>
<body> 

// FORM 

<form method="post" action="" id="ajax_form"> 
   Title <input type = "text" name="titulo" value="">
    X <input type = "text" name="x" value="">
    Y <input type = "text" name="y" value=""> 
      <input type="submit" name="enviar" value="Enviar" />
</form>

// Ai aqui estou tentando imprimir a imagem atualizada
<img src="'.<?php $texto?>.'.jpg">

no processa.php estou trabalhando com GD para gerar imagem

<?php

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  
 $titulo = $_POST['titulo'];
 $x = $_POST['x'];
 $y = $_POST['y'];

}

// Gerar imagem usando a biblioteca GD 
$texto = $titulo; // conteudo vem do formulário post 
$font_size = 10; 
$font_file = 'arial.ttf'; 
$texto = wordwrap($texto, 11, "\n", true);
 $x = $x; // vem do formulario
 $y = $y; // vem do formulario
 $imagem = imagecreate(50, 50); 
$fundo= imagecolorallocate($imagem , 0, 0, 0); 
$letra= imagecolorallocate($imagem , 255, 255, 255); 

imagettftext($imagem, $font_size0, 0, $x, $y, $letra, $font_file, $texto);
 imagejpeg($imagem, "".$texto.".jpg", 100); // salva imagem diretorio 
​imagedestroy($imagem); 

?>

Para gerar a imagem e salvar estou conseguindo, mas a dificuldade é passar via post os dados do formulário e dificuldade com o ajax para dar refresh sem atualizar a página.

 

Um help pra me ajudar entender e fazer funcionar?

 

Agradeço ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que pegar o retorno e escrever na página em algum elemento, por exemplo:

Troque:

alert( data );

Por:

$('#imagem').attr("src",data);

Troque:

<img src="<?php $texto?>.jpg">

Por:

<img id="imagem" src="<?php $texto?>.jpg">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada Eserra, ainda não funcionou.

Nem gerou a imagem no diretório. A forma de recuperar o conteúdo dos inputs (post) esta certa?

Compartilhar este post


Link para o post
Compartilhar em outros sites


<html>

 

 

<head>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

<script type="text/javascript">

jQuery(document).ready(function(){

jQuery('#ajax_form').submit(function(){

var dados = jQuery( this ).serialize();

 

 

jQuery.ajax({

type: "POST",

url: "processa.php",

data: dados,

success: function( data )

{

$('#imagem').attr("src",data);

}

});

 

 

return false;

});

});

</script>

</head>

<body>

 

 

// FORM

 

 

<form method="post" action="" id="ajax_form">

Title <input type = "text" name="titulo" value="">

X <input type = "text" name="x" value="">

Y <input type = "text" name="y" value="">

<input type="submit" name="enviar" value="Enviar" />

</form>

 

 

// Ai aqui estou tentando imprimir a imagem atualizada

<img id="imagem" src="<?php $texto?>.jpg">

</body>

 

 

</html>


<?php

 

 

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

 

$titulo = $_POST['titulo'];

$x = $_POST['x'];

$y = $_POST['y'];

 

 

}

 

 

// Gerar imagem usando a biblioteca GD

$texto = $titulo; // conteudo vem do formulário post

$font_size = 10;

$font_file = 'arial.ttf';

$texto = wordwrap($texto, 11, "\n", true);

$x = $x; // vem do formulario

$y = $y; // vem do formulario

$imagem = imagecreate(50, 50);

$fundo= imagecolorallocate($imagem , 0, 0, 0);

$letra= imagecolorallocate($imagem , 255, 255, 255);

 

 

imagettftext($imagem, $font_size, 0, $x, $y, $letra, $font_file, $texto);

imagejpeg($imagem, $texto.".jpg", 100); // salva imagem diretorio

imagedestroy($imagem);

echo $texto.".jpg";

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique as permissões em pasta (no caso de servidor linux)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que deve ser permissão mesmo, pelo console, depois de clicar no submit demora cerca de uns 30 segundos e aparece forbidden 403, e no local onde deveria aparecer a imagem, no código fonte muda para o mesmo erro do console mas resumido :

<img id="imagem" src="<br /> <font size='1'<table class='xdebug-error xe-warning' dir='ltr' bor...eeec'>..\processa.php<b>:</b>76</td></tr></table></font>imagemteste.jpg">

esse imagemteste.jpg é o titulo que coloquei no formulario para teste.

 

Mas permissão de pasta não é, talvez eu deva informar corretamente no htaccess o processa.php, mas inserindo no htaccess:

 RewriteRule ^site\/?$ /site/form.php [NC,L]   RewriteRule ^site\/?$ /site/processa.php [NC,L]   // inserindo esse

continua o mesmo erro

 

 

.

 

 

Continua dando erro forbidden 403

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.