嗨,我正在尝试动态验证我的注册表单,以便当用户使用 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();
?>
最佳答案
你需要使用jquery的parseJSON函数来使用返回数据,所以在validate函数中的行将是这样的
var obj = jQuery.parseJSON(data);
$('#fname_feedback').text(obj.fname);
我 Controller 需要这样添加
<?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();
?>
关于javascript - json数组值没有传回jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32630608/