【问题标题】:jQuery remote validation helpjQuery远程验证帮助
【发布时间】: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 的远程调用不允许远程完成,或者远程调用更可能没有获得它正在寻找完成检查的“真实”值。

标签: php jquery ajax


【解决方案1】:

添加到验证器代码本身:

if ($.isFunction(param.validateResult)) response = param.validateResult(response);

来自http://plugins.jquery.com/content/custom-function-handle-returned-data-remote-function 的站点似乎工作得非常好,因为它可以正确验证并提交表单。如果有人想进一步测试以确保边缘情况很好,但这绝对应该添加到验证器插件中以扩展其功能。

【讨论】:

    猜你喜欢
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    相关资源
    最近更新 更多