Jump to content

[resolvido]JQuery Json "msg is null"


Dkid
 Share

Recommended Posts

Bom dia,

Estou com um problema um pouco estranho.

No meu formulário após submeter o firebug indica-me que a mensagem é nulla, no entanto no script penso que estou a seguir as normas json e não entendo o porquê de não estar a funcionar.

Se me puderem dar uma ajuda agradeço.

O formulário em html com o JQuery

<!DOCTYPE HTML>
<hmtl lang="pt-PT">
<head>
	<title>Formulário</title>
	<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
</head>
<body>
<hr />
<h3>Formulario</h3>

<script type="text/javascript" charset="utf-8">
	$(function () {
		$('#submiter').click( function() {
			$.ajax({
			  type: "POST",
			  url: 'validar.php',
			  dataType: 'json',
			  success: function(msg) {
				alert('Mensagem '+ msg.mensagem);
			},
			error : function () {
				alert('Ocorreu um erro');
			}
			});

		});
	});
</script>

<form id="formulario" action="" method="post" accept-charset="utf-8">
	<p>Pergunta 1</p>
	<label for="pergunta1">sim</label><input type="radio" id="p1" name="pergunta1" value="1" /><br />
	<label for="pergunta1">não</label><input type="radio" id="p1" name="pergunta1" value="0" />
	<br />

	<p>Pergunta 2</p>
	<label for="pergunta2">sim</label><input type="radio" name="pergunta2" value="0" /><br />
	<label for="pergunta2">não</label><input type="radio" name="pergunta2" value="1" />
	<br />		

	<p>Pergunta 3</p>
	<label for="pergunta3">sim</label><input type="radio" name="pergunta3" value="0" /><br />
	<label for="pergunta3">não</label><input type="radio" name="pergunta3" value="1" />
	<br />		

	<p>Pergunta 4</p>
	<label for="pergunta4">sim</label><input type="radio" name="pergunta4" value="0" /><br />
	<label for="pergunta4">não</label><input type="radio" name="pergunta4" value="1" />
	<br />	


	<p><input type="submit" id="submiter" value="Continue →"></p>
</form>
</body>
</html>

Script de validação

<?php
if($_POST) {
	$pergunta1 = $_POST['pergunta1'];
	$pergunta2 = $_POST['pergunta2'];
	$pergunta3 = $_POST['pergunta3'];
	$pergunta4 = $_POST['pergunta4'];

	$calcular = $pergunta1 + $pergunta2 + $pergunta3 + $pergunta4;

	if ($calcular <= 9) { ?>
{ mensagem : 1 }
<?php }
	if (($calcular >9) and ($calcular <=11) ){
	?>
{ mensagem : 2}
<php }
	if ($calcular >11) { ?>
{ mensagem : 3}
<?php }	

}
else { ?> 
{ mensagem : 4}	
<?php }
?>

I promise that I will not change the PATH variable again other than:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Link to comment
Share on other sites

Viva!

Conheço melhor prototype, mas vou tentar ajudar...

Estás a receber bem os dados no servidor? É que parece-me que existem alguns erros no teu código para enviar os dados...

Na tua função JS estás a usar o evento click para o butao submit, mas acho que devias usar o evento .submit para o formulario "formulario". Não tenho a certeza se assim funciona...

Referencia: http://api.jquery.com/submit/

OUtra coisa, não estás a passar dados no ajax. Devias ter mais o parametro 'data' e devias usas o paramentro type: "POST" para o teu código PHP receber bem o POST.

$.ajax({   
    type: "POST",   
    url: "validar.php",   
    data: $('#formulario').serialize(),   
    success: function() { 

$('#formulario').serialize() é uma string com os nomes dos campos no formulário e respectivos valores separados por '&' (tal como se faz por GET)

Link to comment
Share on other sites

Boas, obrigado pela resposta, no entanto já percebi o problema... estava aqui a "engonhar" código sem necessidade, uma vez que é um formulário nem devia estar a seleccionar o botão submit.

$(document).ready(function () {
    $.ajax({
        type: "POST",
        url: 'validar.php',
        dataType: 'json',
        success: function(msg) {
            alert('Mensagem '+ msg.mensagem);
        },
        error : function () {
            alert('Ocorreu um erro ao submeter o seu formulario, tente novamente.');
        }
    });
});

I promise that I will not change the PATH variable again other than:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.