Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá galera estou testando pegar todos os campos de uma só vez para tentar agilizar mais os códigos, se alguém tiver alguma sugestão e quiser me indicar, estou tentando elaborar um CRUD da vida em js, meu código js ta muito extenso, meu primeiro obstáculo
Formullário
<form>
<input type="text" placeholder="nome">
<input type="text" placeholder="email">
<input type="password" placeholder="senha">
<button type="button" id=cadastrar>Cadastrar</button>
</form>
Meu js:
$('#cadastrar').click(function(){
$('input').each(function(){
$.post('/require/jp/jpCadastro.php',{
dadosUsuario:$(this).val()
},function(res){
if(res){
panel.slideDown().css({background:'#ff4444'});
msg.html(res).css({color:'#ffffff'});
}
})
})
});
e no php jpCadastro.php
extract($_POST);
print dadosUsuario;
Desta forma recebo todos os dados, detalhe com ou sem os atributos id ou name nos inputs ainda recebo esses valores.
usando o extract() pra mi seria interessante não quero ficar declarando um monte de variável pois estou tentando elaborar um CRUD em js ainda não pensei em uma forma mais eficaz.
O fato é que quero usar o extract($_POST)
e pegar individualmente as variáveis como :
print $nome.' '.$email.' '.$senha;
Como fazer isso galera ?
Ao invés de
<form>
<input type="text" placeholder="nome">
<input type="text" placeholder="email">
<input type="password" placeholder="senha">
<button type="button" id=cadastrar>Cadastrar</button>
</form>
Utilize:
<div id="js-dados">
<input type="text" placeholder="nome">
<input type="text" placeholder="email">
<input type="password" placeholder="senha">
<button type="button" id="btn-cadastrar">Cadastrar</button>
</div>
<div id="result"></div>
e no Js vai ficar assim:
$(document).ready(function() {
$( "btn-cadastrar" ).bind( "click", function() {
$.ajax({
url: '/require/jp/jpCadastro.php'
,data: $('#js-dados *').serialize()
,type:'POST'
,dataType: 'json'
,success: function(json){
$('#result').text('Enviado');
return true;
}
,error: function(json){
$('#result').text('Ops...');
return true;
}
});
});
});
A ideia é utilizar o serialize do jQuery e na sua pagina 'jpCadastro.php' ter todos os dados de uma vez via POST que estão encapsulados/serializados na arvore do 'DOM' e filhas do:
<div id="js-dados">
</div>
Ps: Da pra automatizar ainda mais isso se você espera campos específicos ;)
<?php
foreach($_POST as $fields)....
Acho q deu pra imaginar neh hehe...
Abraços
Não existe "nome", "email" e "senha" pro PHP. Você envia tudo com o identificador "dadosUsuario". O PHP nunca saberá que tipo de dado está recebendo
E tem outro problema aí: você faz uma requisição POST para cada um dos inputs. Está gastando tempo e rede à toa
Sugiro que identifique cada input com id, name ou uma tag html5 genérica (usando "data-tipo_do_campo", por exemplo).. Assim o JS pode identificar cada campo e mandá-lo pro PHP com o nome correto