P3rukao 0 Denunciar post Postado Maio 6, 2010 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
lucaswxp 22 Denunciar post Postado Maio 7, 2010 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
P3rukao 0 Denunciar post Postado Maio 9, 2010 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
P3rukao 0 Denunciar post Postado Maio 9, 2010 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
lucaswxp 22 Denunciar post Postado Maio 10, 2010 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