我尝试创建一个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"}
,这似乎是正确的。
答案 0 :(得分:1)
您失去了功能属性和数据类型:
$.post('core/name_processing.php', { name: name }, function(data) {
....
}, 'json');
有关信息,请参阅http://api.jquery.com/jquery.post/。