json数组值未传递回jquery

时间:2015-09-17 12:44:30

标签: javascript php jquery json

您好我正在尝试动态验证我的注册表单,以便在用户使用jquery和php将值输入到输入字段时进行检查。非常感激任何的帮助。

html

   <DOCTYPE html>

<html lang="en">

<head>
     <meta charset="utf-8">
     <title>jQuery Tutorial</title>
</head>

<body>
<form>
<input type="text" id="fname" size ="25" placeholder="firstname" />
<span id="fname_feedback"></span></br></br>
<input type="text" id="lname" size ="25" placeholder="firstname" />
<span id="lname_feedback"></span></br></br>
<input type="submit" id="reg" value="sign up">
</form>

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/reg.js"></script>
</body>

</html>

jquery

function validate(fname, lname){
$.post('php/registration.php', {fname: fname, lname: lname}, function(data){

        $('#fname_feedback').text(data.fname);
        $('#lname_feedback').text(data.lname);
;
    },'json');
}

$('#fname').focusin(function(){ 
  if($('#fname').val() ==='') {
$('#fname_feedback').text('requried field');
} else {

validate($('#fname').val());

}
}).blur(function() { 

$('#fname_feedback').text('');

validate($('#fname').val());

}).keyup(function(){

validate($('#fname').val());

});

$('#lname').focusin(function(){ 
  if($('#lname').val() ==='') {
$('#lname_feedback').text('requried field');
} else {

validate($('#lname').val());

}
}).blur(function() { 

$('#lname_feedback').text('');

validate($('#lname').val());

}).keyup(function(){

validate($('#lname').val());

});

php

<?php

require '../init.php';
$fname_error= '';
$lname_error='';

if(isset($_POST['fname']))
{
    $fname = $_POST['fname'];

     //updated if statement
     if (strlen($fname) < 5)
    {
        $fname_error = 'example error message';
    } else {

         $fname_error = 'example';
    } 
}

if(isset($_POST['lname']))
{
    $lname = $_POST['lname'];

     //updated if statement
     if (strlen($lname) < 5)
    {
        $lname_error = 'example error message';
    } else {

         $lname_error = 'example';
    } 
}


$return_data=array('fname'=> $fname_error, 'lname'=>$lname_error);

header('Content-Type: application/json');
echo json_encode($return_data);
exit();
?>

1 个答案:

答案 0 :(得分:3)

你需要使用jquery的parseJSON函数来使用返回数据,所以在验证函数中这样的行会是这样的

var obj = jQuery.parseJSON(data);
$('#fname_feedback').text(obj.fname);

我需要像这样添加控制器

<?php

require '../init.php';
$fname_error= '';

if(isset($_POST['fname']))
{
    $fname = $_POST['fname'];

     //updated if statement
     if (strlen($fname) < 5)
    {
        $fname_error = 'example error message';
    }
}

$return_data=array('fname'=> $fname_error);

header('Content-Type: application/json');
echo json_encode($return_data);
exit();
?>