Jquery中的Json问题

Dav*_*slv 0 php ajax jquery json

我有一个小调查,但当我提交它说msg为空,我不知道我的错误在哪里.

如果你能帮助我,我可以帮助我.

谢谢

我的表单与Jquery和Ajax函数

<!DOCTYPE HTML>
<hmtl lang="pt-PT">
        <head>
                <title>Formul&aacute;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&atilde;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&atilde;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&atilde;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&atilde;o</label><input type="radio" name="pergunta4" value="1" />
                <br /> 


                <p><input type="submit" id="submiter" value="Continue &rarr;"></p>
        </form>
        </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的PHP

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

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

        $var = array ('mensagem' => $calcular);

        echo json_encode($var);
    }
    else {
        $var2 = array('mensagem' => 'sem resultado');
        echo json_encode($var2);
    }
?>
Run Code Online (Sandbox Code Playgroud)

Ski*_*ick 5

有两个问题.在PHP的中途你<php没有<?php.但实际上你应该使用json_encode.只需用你的数据制作一个PHP数组,json_encode就可以了,它会为你做所有聪明的JSON.保持这种方式会容易得多.

另一个问题:JSON键应该是字符串.

尝试这样的事情:

$result = array();
if ($calcular <= 9) {
    $result['mensagem'] = 1;
}
//... etc.

echo json_encode($result);
Run Code Online (Sandbox Code Playgroud)

编辑:我刚刚完成了一项检查,以下内容适用于我:

$(document).ready(function () {
    $.ajax({
        type: "POST",
        url: 'validar.php',
        dataType: 'json',
        success: function(msg) {
            alert('Mensagem '+ msg.mensagem);
        },
        error : function () {
            alert('Ocorreu um erro');
        }
    });
});
Run Code Online (Sandbox Code Playgroud)