【发布时间】:2011-09-19 16:23:18
【问题描述】:
我使用验证插件的问题是远程调用。
远程检查以确保员工 ID 在数据库中有效。如果有效,则返回一个带有员工信息(名字、姓氏、主管姓名和设施名称)的 json 字符串。
问题是,如果我使用 complete: 函数返回该 json 字符串,则 empid 字段在错误类中仍然无效,并且即使一切都有效,也不允许提交表单。如果我只是从远程调用返回 true,则 empID 字段有效并且表单将提交(假设其他字段已完成)。
json回调中是否有特定参数需要为远程设置为true:调用完成并为true?我不知道如何解决这个问题,所以任何帮助将不胜感激!相关代码见下文。
var ajax_data = new Object;
$('#vpnRequest').validate({
rules: {
empID: {
//required: true,
//minlength: 4,
remote: {
url: "checkEmpID.php",
dataFilter: function(data) { ajax_data = data; return data;},
complete: function() {
var jsonObj = new Object;
jsonObj = jQuery.parseJSON(ajax_data);
var success = jsonObj.status;
if(success == 'false'){
//return success;
}else if(success == 'true'){
$('#fName').val(jsonObj.fName);
$('#lName').val(jsonObj.lName);
$('#superName').val(jsonObj.supervisorFName+" "+jsonObj.supervisorLName);
$('#facilityName').val(jsonObj.facilityName);
$('#empID').addClass('stuff');
$('#empID').removeClass('stuff');
//return success;
}
}
}
}
},
messages: {
empID:{
required: "This field is required",
remote: "Invalid Employee ID"
}
}
});
PHP 文件 empID 检查器:
$string[status] = 'true';
$string[fName] = ucwords(strtolower($row['empFirstName']));
$string[lName] = ucwords(strtolower($row['empLastName']));
$string[supervisorFName] = $superFName;
$string[supervisorLName] = $superLName;
$string[facilityName] = $facilityName;
}
$response = json_encode($string);
echo $response;
} else {
$response = json_encode($valid);
echo $response;
}
【问题讨论】:
-
你的代码能走多远?是否调用了完整的方法?是success=='true'吗?
-
附注我的远程验证方法只返回字符串“true”或“false”,没有 json。
-
代码足够远,可以填写从 json 返回的返回数据,但是 empID 字段仍然无效。似乎使用 json 的远程调用不允许远程完成,或者远程调用更可能没有获得它正在寻找完成检查的“真实”值。