gpt4 book ai didi

javascript - Uncaught TypeError : u(. ..).getServerUrl 不是 HTML Web 资源中的函数

转载 作者:行者123 更新时间:2023-11-30 21:11:03 25 4
gpt4 key购买 nike

我猜这段代码可以在表单上正常工作。当我在 HTML 网络资源中处理 javascript 时,我似乎总是遇到 Xrm.Page.ContextgetServerUrl 等方法的问题。

这是我要运行的函数:

function getAttributeOptions(entityLogicalName, attributeLogicalName, dictionaryObject, onComplete) {
///<summary>
/// <para>Retrieves the picklist attribute options and appends them to a dictionary object.</para>
/// <para>It then executes the function assigned to the onComplete parameter.</para>
///</summary>
///<param name="entityLogicalName" type="String">
/// The logical name of the entity
///</param>
///<param name="attributeLogicalName" type="String">
/// The logical name of the Picklist attribute
///</param>
///<param name="dictionaryObject" type="Object">
/// An empty object that will become a dictionary for the option values.
///</param>
///<param name="onComplete" type="Function">
/// A function to perform when the options are assigned to the dictionaryObject;
///</param>
if (!(typeof entityLogicalName == "string")) {
throw new Error("getAttributeOptions entityLogicalName parameter is required and must be a string.");
}
if (!(typeof attributeLogicalName == "string")) {
throw new Error("getAttributeOptions attributeLogicalName parameter is required and must be a string.");
}
if (!(typeof dictionaryObject == "object")) {
throw new Error("getAttributeOptions dictionaryObject parameter is required and must be an object.");
}
if (!(typeof onComplete == "function")) {
throw new Error("getAttributeOptions onComplete parameter is required and must be a function.");
}

var passThroughObject = {};
passThroughObject.eln = entityLogicalName;
passThroughObject.aln = attributeLogicalName;
passThroughObject.dObj = dictionaryObject;
passThroughObject.oc = onComplete;

if ((typeof SDK == "undefined") || (typeof SDK.Metadata == "undefined") || (typeof SDK.Metadata.Query == "undefined")) {
throw new Error("getAttributeOptions function requires the SDK.Metadata.Query.min.js library and it is not present.");
}

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;

//EntityFilter
var ef = new mdq.MetadataFilterExpression(mdq.LogicalOperator.And);
ef.addCondition(semp.LogicalName, mdq.MetadataConditionOperator.Equals, entityLogicalName);
//Entity Properties
var ep = new mdq.MetadataPropertiesExpression(false, [emp.Attributes]);

//Attribute Filter
var af = new mdq.MetadataFilterExpression(mdq.LogicalOperator.And);
af.addCondition(samp.LogicalName, mdq.MetadataConditionOperator.Equals, attributeLogicalName);

//Attribute Properties
var ap = new mdq.MetadataPropertiesExpression(false, [amp.OptionSet, amp.AttributeType]);
// AttributeQuery
var aq = new mdq.AttributeQueryExpression(af, ap);
// LabelQuery
var lq = new mdq.LabelQueryExpression([1033]);
//EntityQueryExpression
var eqe = new mdq.EntityQueryExpression(ef, ep, aq, null, lq);
//RetrieveMetadataChangesRequest
var rmcr = new mdq.RetrieveMetadataChangesRequest(eqe, null, mdq.DeletedMetadataFilters.Default);

mdq.RetrieveMetadataChanges(
rmcr,
function(rmcResponse, pto) {
var attributeType = "unknown";
if (typeof rmcResponse.EntityMetadata[0] == "undefined" || rmcResponse.EntityMetadata[0] == null) {
throw new Error("No entity metadata found for " + pto.eln);
}
if (typeof rmcResponse.EntityMetadata[0].Attributes[0] == "undefined" || rmcResponse.EntityMetadata[0].Attributes[0] == null) {
throw new Error("No attribute metadata found for " + pto.eln + "." + pto.aln);
}
if (typeof rmcResponse.EntityMetadata[0].Attributes[0].OptionSet == "undefined" || rmcResponse.EntityMetadata[0].Attributes[0].OptionSet == null) {
throw new Error(pto.eln + "." + pto.aln + " does not have an OptionSet property.");
}
attributeType = rmcResponse.EntityMetadata[0].Attributes[0].AttributeType;
if (attributeType != "Boolean") {
if (typeof rmcResponse.EntityMetadata[0].Attributes[0].OptionSet.Options == "undefined" || rmcResponse.EntityMetadata[0].Attributes[0].OptionSet.Options == null) {
throw new Error(pto.eln + "." + pto.aln + "OptionSet does not have an Options property");
}
if (typeof rmcResponse.EntityMetadata[0].Attributes[0].OptionSet.Options[0] == "undefined" || rmcResponse.EntityMetadata[0].Attributes[0].OptionSet.Options[0] == null) {
throw new Error(pto.eln + "." + pto.aln + "OptionSet.Options does not have any options");
}
}


pto.dObj[pto.eln] = pto.dObj[pto.eln] || {};
pto.dObj[pto.eln].attributes = pto.dObj[pto.eln].attributes || {};
pto.dObj[pto.eln].attributes[pto.aln] = pto.dObj[pto.eln].attributes[pto.aln] || {};
pto.dObj[pto.eln].attributes[pto.aln].options = pto.dObj[pto.eln].attributes[pto.aln].options || {};
if (attributeType != "Boolean") {
for (var i in rmcResponse.EntityMetadata[0].Attributes[0].OptionSet.Options) {
var option = rmcResponse.EntityMetadata[0].Attributes[0].OptionSet.Options[i];
pto.dObj[pto.eln].attributes[pto.aln].options[option.Value] = option.Label.UserLocalizedLabel.Label;
}
} else {
pto.dObj[pto.eln].attributes[pto.aln].options[0] = rmcResponse.EntityMetadata[0].Attributes[0].OptionSet.FalseOption.Label.UserLocalizedLabel.Label;
pto.dObj[pto.eln].attributes[pto.aln].options[1] = rmcResponse.EntityMetadata[0].Attributes[0].OptionSet.TrueOption.Label.UserLocalizedLabel.Label;
}

pto.oc(pto.eln, pto.aln);
},
function(error) {
writeMessage(error.message);
},
passThroughObject);

}

// MetaDataDictionary
var mdd = {};

function testResults(entityLogicalName, attributeLogicalName) {
alert("Options for " + entityLogicalName + "." + attributeLogicalName + " cached.");
}
getAttributeOptions("contact", "statecode", mdd, testResults);

for (option in mdd.contact.attributes.statecode.options) {
var value = option;
var label = mdd.contact.attributes.statecode.options[option];
alert(label);
}

这是我正在使用的库中有问题的部分:

function u() {
var n = "Context is not available.";
return typeof GetGlobalContext != "undefined" ? GetGlobalContext() : typeof Xrm != "undefined" ? Xrm.Page.context : new Error(n)
}

function h() {
var n = u().getServerUrl();
return n.match(/\/$/) && (n = n.substring(0, n.length - 1)), typeof u().getClientUrl != "undefined" && (n = u().getClientUrl()), n
}

这是我的错误:

enter image description here

我非常希望可以使用 getServerUrlgetClientUrl。我该怎么做才能实现这一目标?

最佳答案

验证路径并将此库添加到您的 HTML 网络资源中以访问 CRM 上下文。

<script type="text/javascript" src="ClientGlobalContext.js.aspx"></script>

When you need context information outside a form, include a reference to the ClientGlobalContext.js.aspx page in an HTML web resource.

GetGlobalContext

getServerUrl 也是 deprecated ,您必须根据您的 CRM 版本使用 getClientUrl

关于javascript - Uncaught TypeError : u(. ..).getServerUrl 不是 HTML Web 资源中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46137775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com