我正在尝试创建一个AJAX表单,该表单在正确填写字段时显示错误或成功消息。这是我的代码:
$('#name').keyup(function() {
var name = $('#name').val();
$.post('core/name_processing.php', { name: name }, function(data) {
if (data.name === 'nodata') {
$('#name_check').html(' ');
$('.input_feedback').fadeOut('fast');
$('.input_success').fadeOut('fast');
} else if (data.name === 'success') {
$('#name_check').html(data.name);
$('.input_feedback').fadeOut('fast');
$('.input_success').fadeIn('fast');
} else {
$('#name_check').html(data.name);
$('.input_feedback').fadeIn('fast');
}
});
});
"#name"是输入字段。
这是PHP:
<?php
$result = array();
if (isSet($_POST['name'])) {
if (empty($_POST['name'])) {
$result['name'] = 'nodata';
} else {
$name = $_POST['name'];
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$result['name'] = "Only letters and white space allowed";
} else if (strlen($name) > 10) {
$result['name'] = 'success';
} else {
$result['name'] = strlen($name).' characters';
}
}
}
echo json_encode($result);
?>
当我不使用数组时,代码运行得很好,但由于我想添加更多的输入字段,我需要返回数组中的数据。问题似乎是data.name不是一个有效的值,它没有按应有的方式获取数据。我该怎么解决这个问题?
数据返回似乎正确的{"name":"... characters"}
、{"name":"nodata"}
和{"name":"success"}
。
您将丢失函数属性和数据类型:
$.post('core/name_processing.php', { name: name }, function(data) {
....
}, 'json');
请参阅http://api.jquery.com/jquery.post/以获取信息。