Javascript 未捕获类型错误:u(…)。getServerUrl不是HTML Web资源中的函数
我猜这段代码在表单上可以很好地工作。在HTML web资源中使用javascript时,我似乎总是遇到Javascript 未捕获类型错误:u(…)。getServerUrl不是HTML Web资源中的函数,javascript,html,dynamics-crm,Javascript,Html,Dynamics Crm,我猜这段代码在表单上可以很好地工作。在HTML web资源中使用javascript时,我似乎总是遇到Xrm.Page.Context和getServerUrl等方法的问题 以下是我正在尝试运行的函数: 函数getAttributeOptions(entityLogicalName、AttributeLogicName、dictionaryObject、onComplete){ /// ///检索picklist属性选项并将其附加到dictionary对象。 ///然后执行分配给onCompl
Xrm.Page.Context
和getServerUrl
等方法的问题
以下是我正在尝试运行的函数:
函数getAttributeOptions(entityLogicalName、AttributeLogicName、dictionaryObject、onComplete){
///
///检索picklist属性选项并将其附加到dictionary对象。
///然后执行分配给onComplete参数的函数。
///
///
///实体的逻辑名称
///
///
///Picklist属性的逻辑名称
///
///
///将成为选项值字典的空对象。
///
///
///将选项分配给dictionaryObject时要执行的函数;
///
if(!(entityLogicalName的类型==“字符串”)){
抛出新错误(“getAttributeOptions entityLogicalName参数是必需的,必须是字符串。”);
}
如果(!(属性的类型逻辑名称=“字符串”)){
抛出新错误(“getAttributeOptions AttributeLogicName参数是必需的,必须是字符串。”);
}
如果(!(字典对象的类型==“对象”)){
抛出新错误(“getAttributeOptions dictionaryObject参数是必需的,必须是对象。”);
}
if(!(onComplete的类型==“函数”)){
抛出新错误(“getAttributeOptions onComplete参数是必需的,必须是函数。”);
}
var passThroughObject={};
passThroughObject.eln=entityLogicalName;
passThroughObject.aln=属性逻辑名称;
passThroughObject.dObj=字典对象;
passThroughObject.oc=onComplete;
if((typeof SDK==“未定义”)| |(typeof SDK.Metadata==“未定义”)| |(typeof SDK.Metadata.Query==“未定义”)){
抛出新错误(“getAttributeOptions函数需要SDK.Metadata.Query.min.js库,但它不存在。”);
}
var mdq=SDK.Metadata.Query;
var semp=mdq.SearchableEntityMetadataProperties;
var samp=mdq.SearchableAttributeMetadataProperties;
var srmp=mdq.SearchableRelationshipMetadataProperties
var emp=mdq.EntityMetadataProperties;
var amp=mdq.AttributeMetadataProperties;
var rmp=mdq.RelationshipMetadataProperties;
var ve=mdq.ValueEnums;
//实体过滤器
var ef=新的mdq.MetadataFilterExpression(mdq.LogicalOperator.And);
ef.addCondition(semp.LogicalName,mdq.MetadataConditionOperator.Equals,entityLogicalName);
//实体属性
var ep=新的mdq.MetadataPropertiesExpression(false,[emp.Attributes]);
//属性过滤器
var af=新的mdq.MetadataFilterExpression(mdq.LogicalOperator.And);
af.addCondition(samp.LogicalName,mdq.MetadataConditionOperator.Equals,AttributeLogicName);
//属性属性
var ap=新的mdq.MetadataPropertiesExpression(false,[amp.OptionSet,amp.AttributeType]);
//属性
var aq=新的mdq.属性表达式(af,ap);
//标签查询
var lq=新的mdq.LabelQueryExpression([1033]);
//EntityQueryExpression
var eqe=新的mdq.EntityQueryExpression(ef、ep、aq、null、lq);
//RetrieveMetadataChangesRequest
var rmcr=new mdq.RetrieveMetadataChangesRequest(eqe,null,mdq.DeletedMetadataFilters.Default);
mdq.RetrieveMetadataChanges(
rmcr,
功能(rmresponse、pto){
var attributeType=“未知”;
if(rmResponse.EntityMetadata[0]==“未定义”| | rmResponse.EntityMetadata[0]==null的类型){
抛出新错误(“未找到“+pto.eln”的实体元数据);
}
if(RmResponse.EntityMetadata[0]的类型。属性[0]==“未定义”| | RmResponse.EntityMetadata[0]。属性[0]==null){
抛出新错误(“未找到“+pto.eln+”+pto.aln”的属性元数据);
}
if(RmResponse.EntityMetadata[0]的类型。属性[0]。OptionSet==“未定义”| | RmResponse.EntityMetadata[0]。属性[0]。OptionSet==null){
抛出新错误(pto.eln+“+pto.aln+”没有OptionSet属性。”);
}
attributeType=rmResponse.EntityMetadata[0]。属性[0]。attributeType;
if(attributeType!=“Boolean”){
if(RmResponse.EntityMetadata[0]的类型。属性[0]。OptionSet.Options==“未定义”| | RmResponse.EntityMetadata[0]。属性[0]。OptionSet.Options==null){
抛出新错误(pto.eln+“+pto.aln+”OptionSet没有选项属性);
}
if(RmResponse.EntityMetadata[0]的类型。属性[0]。OptionSet.Options[0]=“未定义”| | RmResponse.EntityMetadata[0]。属性[0]。OptionSet.Options[0]==null){
抛出新错误(pto.eln+“+pto.aln+”OptionSet.Options没有任何选项);
}
}
pto.dObj[pto.eln]=pto.dObj[pto.eln]|{};
pto.dObj[pto.eln].attributes=pto.dObj[pto.eln].attributes | |{};
pto.dObj[pto.eln]。属性[pto.aln]=pto.dObj[pto.eln]。属性[pto.aln]|{};
pto.dObj[pto.eln]。属性[pto.aln]。选项=pto.dObj[pto.eln]。属性[pto.aln]。选项|{};
if(attributeType!=“Boolean”){
对于(rmResponse.EntityMetadata[0]中的变量i)。属性[0]。OptionSet.Options){
var option=rmresponse.EntityMetadata[0]。属性[0]。OptionSet.Options[i];
pto.dObj[pto.eln]。属性[pto.aln]。选项[option.Value]=option.Label.UserLocalizedLabel.Label;
}
}否则{
pto.dObj[pto.eln]。属性[pto.aln]。选项[0]=rmResponse.EntityMetadata[0]。属性[0]。OptionSet.FalseOption.Label.UserLocalizedLabel.Label;
<script type="text/javascript" src="ClientGlobalContext.js.aspx"></script>