CRM 2011“$未定义”

时间:2011-03-02 14:01:05

标签: javascript dynamics-crm crm dynamics-crm-2011

我创建了以下代码,并将其作为Web资源包含在CRM 2011表单中,以便在查找字段的字段onchange事件上调用。在$.ajax({...行之前一切正常,然后我有一个错误“$未定义”。 我不太熟悉脚本,所以请帮助。

function GetAddress() {

    var accountId;
    var dataArray;
    var accountRequestUrl;

    if (crmForm.all.regardingobjectid.DataValue != null) {

        dataArray = crmForm.all.regardingobjectid.DataValue;
        accountId = dataArray[0].id;

        if (typeof GetGlobalContext == "function") {
            var context = GetGlobalContext();
            accountRequestUrl = context.getServerUrl();
        }
        else {
            if (typeof Xrm.Page.context == "object") {
                accountRequestUrl = Xrm.Page.context.getServerUrl();
            }
        }

        accountRequestUrl = Xrm.Page.context.getServerUrl();
        accountRequestUrl += "/XRMServices/2011/OrganizationData.svc/AccountSet(guid'" +
            accountId + "')";

        crmForm.all.maxlife_addressname.DataValue = accountRequestUrl;

        GetAccountRecord(accountRequestUrl);
    }
    else {
        alert("null");
    }

}

function GetAccountRecord(accountRequestUrl) {

    $.ajax({
        type: "GET",
        url: accountRequestUrl,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        error: function (request, textStatus, errorThrown) {
            alert("Error occurred: " + request.responseXML + "from url " + requestUrl);
            return;
        },
        success: function (data) {
            var results = data.d["results"];
            var AccountValue = new Array();
            for (resultKey in results) {
                AccountValue.push(results[resultKey]);
            }

            FillValues(AccountValue);
        }
    });
}

3 个答案:

答案 0 :(得分:25)

$是jQuery的简写。 jQuery本身并不包含在CRM2011中,因此您必须自己添加Web引用。只需为jQuery创建JavaScript Web资源,粘贴jQuery代码,然后将Web资源添加到表单中。此外,为了在您的表单上加载Web资源,您需要为CRM指定一个函数来从中调用。因为在这种情况下jQuery是一个库,你不会调用它的任何函数onload,只需使用isNaN(本机JavaScript函数)作为调用函数。

答案 1 :(得分:1)

您正在使用的实体表单。转到表单自定义 - >表单属性。 您可以看到该表单已包含的文件(.js)。

单击“添加”(左上角)..并添加JQuery文件(如JQuery1.4.4或更高版本),如果在您的CRM Web资源中添加了JQuery文件,如果没有,则需要在CRM webresources中添加此文件第一

答案 2 :(得分:0)

听起来你需要在表单上包含jquery。

基本上你只需像添加任何其他javascript文件一样添加jquery。

  • 下载jquery的副本(压缩时解压缩,需要.js文件)
  • 导航到解决方案中的网络资源
  • 单击工具栏中的“新建”按钮
  • 填写表格
  • 单击“上载文件”框的“浏览”按钮
  • 选择您下载的.js文件
  • 单击功能区栏中的“保存”按钮
  • 单击功能区栏中的“发布”按钮

将新创建的Web资源添加到表单中(在“表单属性”下) 请确保这是您表单上列出的第一个库。
在jquery的事件处理程序中你不需要任何东西,只需按照惯例从任何自定义库中调用它。

请记住,您可能不支持使用jquery的许多内容。 Microsoft希望您使用Xrm.Page对象:
使用Xrm.Page对象模型
http://msdn.microsoft.com/en-us/library/gg328474.aspx

  

根据微软的说法:
  使用jQuery
  不要使用jQuery与Microsoft Dynamics CRM 2011表单进行交互   使用Xrm.Page对象模型方法访问表单元素   在Microsoft Dynamics CRM 2011 Web中唯一支持使用jQuery   应用程序是使用jQuery.ajax方法从中检索数据   REST端点。有关更多信息,请参阅使用jQuery    使用jQuery修改Microsoft Dynamics CRM 2011   不支持申请页面或表格    您可以在自己的HTML Web资源页面中使用jQuery   http://msdn.microsoft.com/en-us/library/gg328261.aspx#BKMK_UsingjQuery>

将REST端点与Ajax和JScript Web资源一起使用
http://msdn.microsoft.com/en-us/library/1bb82714-1bd6-4ea4-8faf-93bf29cabaad#BKMK_UsingJQuery

CRM 2011有用的JavaScript花絮
调用字段的onchange事件
http://www.powerobjects.com/blog/2011/01/14/crm-2011-useful-javascript-tidbits/