Ir para conteúdo

POWERED BY:

Arquivado

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

P3rukao

[Resolvido] Form Submit com Jquery Ajax

Recommended Posts

Galera,

estou tentando enviar um form por jquery com ajax mas não estou conseguindo, e não tow sacando o problema.

 

Tenho um form normal:

<form id="formAddUser" action="<?php echo $this->webroot."cadastro/validar/"?>" method="post">
<input type="text" name="data[Cadastro][nome]" />
<input type="submit" value="Enviar" />
</form>

Meu controller:

function validar(){
	 
//so para teste
$json = array();
		$json["status"] = "erro";
		$json["msg"] = "Deu erro: ";
		die(json_encode($json));
}//end function validar($data = null)

e o javascript:

jQuery("#formAddUser").submit(function() {									 
	var data = jQuery(this).serialize(); // Dados do formulário	

	// Envia o formulário via Ajax
	jQuery.ajax({
		type: "POST",
		url: this.action,
		data: data,
		cache: false,
		dataType: "json",
		success: function(json)
		{
			if (json.status == "erro")
			{
				alert('erro');
			}
			else if (json.status == "ok")
			{
				alert('ok')
			}
		},
		error:function(XMLHttpRequest, textStatus, errorThrown)
		{
			alert("EITA: malassombro");
		}
	});
	return false; // Previne o form de ser enviado pela forma normal
});

 

Fiz tudo quanto foi tipo de teste (com dados/sem dados no form, com json/sem json,...), mas nunca funciona... dá sempre o erro alert("EITA: malassombro");

Tow fazendo algo errado?

Tow querendo enviar um formulário via jquery-ajax-json, somente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oque aparece no action? (quando ja estiver interpretrado)

action="<?php echo $this->webroot."cadastro/validar/"?>"

Bom.. você terá que fazer uma bateria de testes... eu também já tive muitos problemas com ajax/jQuery xD

Os dados estão sendo serializados corretamente? O script está conseguindo, no minimo, acessar a URL?

Pode ser varias coisas... tem que ir eliminando aos poucos....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois eh, eu já fiz tudo quanto foi debug manual que eu imaginei.

O javascript tá funcionando,

O jQuery também;

Se mandar o form com o javascript desabilitado ele retorna uma mensagem json normal.

mas quando tenta com o ajax, ele sempre retorna o status de error:function(){...}.

Tá muito cavernoso, não consigo entender essa bronca... =/

 

Eu descobri o porque do erro cavernoso...

 

Quando eu submeto o form pelo jquery/ajax, ele procura a minha action index, nesse caso quando eu chamo a mesma página que está o form, e ele retorna todo o conteúdo da página, só que em formato html...

Aí só pra teste, eu mandei ele submeter para a action validar, mas aí ele dá erro pq não existe nenhuma view para o método validar... e mesmo criando a view, ele continua dando problema... mas se no jquery eu mudar o tipo de retorno pra html, ele funciona direitinho... pelo menos quanto a resposta (¬¬)

 

Então como é que eu faço pra validar isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu consegui fazer funcionar, só não sei se é assim mesmo.

 

no meu controller eu fiz assim:

 

function validar($json = false){
			$return = array();
			$return['status']="ok";
			$return['msg']="Testing, testing.";
			echo json_encode($return);
	}//end function validar($data = null)

e no jquery, eu passei a url site/cadastro/validar/, e criei a view para a action validar também, só que deixei ela vazia..

 

Funcionou... pelo menos não deu erro do ajax... mas é assim mesmo? Ô.õ_

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não precisa criar uma view vazia, basta:

$this->autoRender = false; // não renderiza view alguma
Configure::write('debug', 0); // não mostra debug
$this->layout = 'ajax'; // Utiliza um layout para ajax (não é necessário neste caso)

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.