Ir ao conteúdo
  • Cadastre-se

Problemas no envio


MarcelinhoB

Posts recomendados

Tenho 3 arquivo principais

Um php pra validacao no servidor

Um index.php com 2 dialog form em JQuery

O funcionamento deveria ser o seguinte, clico em criar usuario no index.php, ele chama um dialogo do jquery com os campos de cadastro, ao clicar em criar usuario, esse dialogo me redireciona para o outro dialogo so pra confirmar os dados do lado do servidor e para o cliente ver se deseja finalizar o cadastro.

Estruturalmente o codigo ta assim:

index.php:


<head>
<script src="jq/jquery-1.8.3.js"></script>
<script src="scr/validar.js"></script>
</head>
<body>

<div id="dialog-form" title="Criar novo Usuário">
<fieldset>
<form id="form" name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<label for="nome">*Nome:</label>
<input type="text" Id="nome" name="nome" class="text ui-widget-content ui-corner-all">
</form>
</fieldset>
</div>

<button id="create-user">Criar um novo usuário</button>

<div id="dialogoretorno" title="Formulário de Validação">
<fieldset>
<form>
Para modificar algum dado do Formulário, clique em Voltar<br>
<?php require_once('php/validate.php');?>
</form>
</fieldset>
</div>

</body>
</html>

validar.js:


$(function() {

nome = $("#nome"),
$("#dialog-form").dialog(
{
autoOpen : false,
height : 400,
width : 600,
modal : true,
buttons : {
"Criar Usuário": function() {
bValid = true;
bValid = bValid && checkLength(nome, "nome", 3, 25);
if (bValid){
$("#dialogoretorno").dialog("open");
// $("#form").submit;
}
},
Fechar : function() {
$(this).dialog("close");
}
},
close : function() {

}
});

$("#dialogoretorno").dialog(
{
autoOpen : false,
height : 400,
width : 600,
modal : true,
buttons : {
"Finalizar": function() {
Funcao de retorno
$(this).dialog("close");
$("#form").reset();
},
Voltar : function() {
$(this).dialog("close");
},
Fechar : function() {
$(this).dialog("close");
$("#form").reset();
}
},
});

$("#create-user").button().click(function() {
$("#dialog-form").dialog("open");
});

validate.php


<?php
$dados = $_POST; //Somente pra ver se estou pegando alguma coisa
echo var_dump($dados); //idem
$nome = $_POST['nome'];
if (validaNome($nome)){
echo "<label>Nome: <input type='text' value='$nome' disabled='disabled'></label>";
}else{
echo "<label>Há um problema com o NOME informado</label><br>";
}

function validaNome($nome){
if ($nome != "" && is_numeric($nome)==false) {
return true;
}else{
return false;
}
}

Ai que sao elas, o codigo funciona perfeitamente, consigo fazer a chamada de funcao de retorno direitinho, so que nao to conseguindo validar pelo lado do servidor, o php da o seguinte erro: Notice: Undefined index: nome

Aparentemente o POST nao ta pegando nada, e somente aconteceu isso quando decidi implementar o codigo para o validate.php aparecer na propria pagina index.php

Quando o action apontava a pagina validate.php ele pegava os dados certinho

To quebrando a cabeca aqui, alguma luz?

Link para o comentário
Compartilhar em outros sites

  • Moderador

Olá,

É melhor você utilizar a função $.ajax() do jquery para enviar os dados.

Isso supre a necessidade de usar o action para o mesmo index.php..

Se tiver muitos campos a serem preenchidos.. podes usar a função serialize() do jquery:

exemplo do $.ajax() e serialize():


var dados = $("#form").serialize();

$("#btn_submit").click(function(){
$.ajax({
url: "validate.php",
dataType: "html",
data: dados,
type: "POST",
success: function(data){
$("#msg").html(data);
},
error: function(data){
$("#msg").html(data);
};
});

});


Link para o comentário
Compartilhar em outros sites

Cara, como falei ctg por pm, não tinha conseguido implementar a ideia no meu projeto[de carater, digamos academico]

Enfim, depois de mais umas marteladas na cabeça, consegui achar a solução rs, abaixo, em linha de codigio mostro onde tava meu erro, trivial, que na verdade nem é um erro, mas que tava travando meu projeto.

Gostei da sua solução, e um colega meu da empresa tambem me apresentou uma outra solução, tão simples quanto a sua, em projetos futuros vou tentar implementar as idéias de vocês. Mais uma vez, agradeço a ajuda

O problema tava aqui: validar.js


$(function() {

nome = $("#nome"),
$("#dialog-form").dialog(
{
autoOpen : false,
height : 400,
width : 600,
modal : true,
buttons : {
"Criar Usuário": function() {
bValid = true;
bValid = bValid && checkLength(nome, "nome", 3, 25);
if (bValid){
$("#dialogoretorno").dialog("open");
[COLOR="Red"]$("#form").submit;[/COLOR] // faltava um simples () depois do submit, ou seja, o correto é $("#form").submit();
}
},
Fechar : function() {
$(this).dialog("close");
}
},
close : function() {

}

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...