Json的回应没有在div中显示

时间:2014-09-09 02:11:52

标签: php jquery ajax

希望有人能在这里帮助我,我厌倦了把头撞在桌子上。我不确定为什么json响应不会出现在表单下方的div上。我可以在我的firebug调试器(Firefox调试器)中看到响应,但没有显示在div中。

我包含表单和javascript的主register.php,并使用调用注册函数的php代码调用另一个register.php文件。我可以毫无问题地创建新的帐户和数据文件到数据库,但我无法在我的div中得到响应。请帮忙!

register.php

<body>
<div class="logo"></div>
<div class="form">
    <form id="register" method="post">
        <input type="text" name="email" id="email" placeholder="Email Address" /><br/><br/>
        <input type="text" name="username" id="username" placeholder="Username" />
        <input type="password" name="password" id="password" placeholder="Password" />
        <input type="submit" id="register" value="Register" />
    </form>
</div>
<div class="small">
    <a href="?page=login">I already have an account</a><br/>
</div>
<div id="message"></div>

<script type="text/javascript">
$(document).ready(function(){
    var myForm = $('#register');

    myForm.validate({
            errorClass: "errormessage",
            onkeyup: false,
            errorClass: 'error',
            validClass: 'valid',
            rules: {
                email: { required: true, email: true, minlength: 3, maxlength: 100 },
                username: { required: true, minlength: 3, maxlength: 30 },
                password: { required: true, minlength: 3, maxlength: 100 }
            },
            errorPlacement: function(error, element)
            {
                var elem = $(element),
                    corners = ['right center', 'left center'],
                    flipIt = elem.parents('span.right').length > 0;

                if(!error.is(':empty')) {
                    elem.filter(':not(.valid)').qtip({
                        overwrite: false,
                        content: error,
                        position: {
                            my: corners[ flipIt ? 0 : 1 ],
                            at: corners[ flipIt ? 1 : 0 ],
                            viewport: $(window)
                        },
                        show: {
                            event: false,
                            ready: true
                        },
                        hide: false,
                        style: {
                            classes: 'ui-tooltip-red'
                        }
                    })
                    .qtip('option', 'content.text', error);
                }
                else { elem.qtip('destroy'); }
            },
            success: $.noop,
    })
});

$("#register").submit(function(event) {
    if($("#register").valid()) {
        event.preventDefault(); 

        var $form = $( this ),
            mail = $form.find('input[name="email"]').val(),
            user = $form.find('input[name="username"]').val(),
            pass = $().crypt({method:"sha1",source:$().crypt({method:"sha1",source:$form.find('input[name="password"]').val()})});

        $.post("inc/action.php?a=register", {email: mail, username: user, password: pass},
            function(data) {

                    $("#message").html('<p> code: ' + data.error + '</p>');
                    $("#message").append('<p> message: ' + data.message + '</p>');

            }, "json"
        );
    }
    else
    {
        $("[id^=ui-tooltip-]").effect("pulsate", {times: 3}, 300);
        return false;
    }
});
</script>
</body>

register.php

<?php

if(isset($_POST['email'])) { $email = $_POST['email']; } else { echo 1; exit(); }
if(isset($_POST['username'])) { $username = $_POST['username']; } else { echo 1; exit(); }
if(isset($_POST['password'])) { $password = $_POST['password']; } else { echo 1; exit(); }

$register = $auth->register($email, $username, $password);

$return = array();

switch($register['code'])
{
    case 0:
        $return['error'] = 1;
        $return['message'] = "You are temporarily locked out of the system. Please try again in 30 minutes.";
        break;
    case 1:
        $return['error'] = 1;
        $return['message'] = "Username / Password is invalid";
        break;
    case 2:
        $return['error'] = 1;
        $return['message'] = "Email is already in use";
        break;
    case 3:
        $return['error'] = 1;
        $return['message'] = "Username is already in use";
        break;
    case 4:
        $return['error'] = 0;
        $return['message'] = "Account created ! Activation email sent to " . $register['email'];
        break;
    default:
        $return['error'] = 1;
        $return['message'] = "System error encountered";
        break;
}

$return = json_encode($return);

echo $return;

1 个答案:

答案 0 :(得分:0)

在返回json编码数据之前添加标题(&#39; Content-Type:application / json&#39;)。

在json.php中

<?php
$data['error']=1;
$data['msg']="error";

header('Content-Type: application/json');
echo json_encode($data);

?>
index.php中的

<script type="text/javascript">
    $.ajax({
        url:'json.php',
        success:function(data){
            $('body').html(data.msg);
        }
    });
</script>