1

我有一个ajax调用如下

  $.ajax({
    datatype:'json',
    url: 'http://localhost:9090/openidm/policy/managed/user/'+storeUserId,
    type:'get',
    xhrFields: {
        withCredentials: true
    } ,   
    corssDomain:true,
    headers: {
        "X-Requested-With":"XMLHttpRequest" 
    }, 
    success: function (result){
        var validations = result.properties[1].policies[1];
        console.log(validations.policyFunction);
    },
    error:function (error){
        console.log (error);
    }
   });
});

上面的 ajax 调用返回 policyFunction 如下:

    function (fullObject, value, params, property) {
    var isRequired = _.find(this.failedPolicyRequirements, function (fpr) {
        return fpr.policyRequirement === "REQUIRED";
    }), isNonEmptyString = (typeof (value) === "string" && value.length), hasMinLength = isNonEmptyString ? (value.length >= params.minLength) : false;
    if ((isRequired || isNonEmptyString) && !hasMinLength) {
        return [{"policyRequirement":"MIN_LENGTH", "params":{"minLength":params.minLength}}];
    }
    return [];
}

我想在我的 javascript 文件中实现该功能。就像将参数传递给该函数一样。那么我该如何实施。

4

1 回答 1

1

您可以像这样在浏览器中调用它:

policyFunction = eval("(" + validations.policyFunction + ")");

failures = policyFunction.call({ failedPolicyRequirements: [] },
    fullObject,
    value,
    params,
    propertyName);

其中 fullObject 是整个对象,value 是特定属性的值,params 是验证函数中所需的任何参数,propertyName 是属性的名称。

于 2017-06-29T21:01:45.983 回答