CRM 2011 "$ is undefined"

Я создал следующий код, и я включил его как веб-ресурс в форме CRM 2011, который вызывается в поле onchange event поля поиска. Все работает отлично до строки $.ajax({..., а затем у меня есть ошибка "$ is undefined". Я не очень хорошо разбираюсь в написании сценариев, поэтому, пожалуйста, помогите.

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);
        }
    });
}

Ответы

Ответ 1

$является сокращением для jQuery. jQuery не входит в состав CRM2011, поэтому вам придется добавить веб-ссылку самостоятельно. Просто создайте веб-ресурс JavaScript для jQuery, вставьте код jQuery и добавьте веб-ресурс в свою форму. Кроме того, чтобы загрузить веб-ресурс в вашу форму, вам нужно указать функцию CRM для вызова из нее. Поскольку в этом случае jQuery является библиотекой, и вы не будете вызывать какие-либо ее функции onload, просто используйте isNaN (встроенную функцию JavaScript) как функцию для вызова.

Ответ 2

Форма лица, на которой вы работаете. Перейдите к настройке формы → Свойства формы. Вы можете видеть файлы (.js), уже включенные для этой формы.

Нажмите "Добавить" (слева вверху).. и добавьте файл JQuery (например, JQuery1.4.4 или более позднюю версию), если в ваш CRM Webresources добавлен файл JQuery, если нет, то вам нужно добавить этот файл в CRM webresources первый.

Ответ 3

Похоже, вам нужно включить jquery в вашу форму.

В принципе, вы просто добавляете jquery так же, как и любой другой файл javascript.

  • Загрузите копию jquery (распакуйте, если zipped, вам нужен файл .js)
  • Перейдите к веб-ресурсам в вашем решении.
  • Нажмите кнопку "Создать" на панели инструментов
  • Заполните форму
  • Нажмите кнопку "Обзор" для поля "Загрузить файл"
  • Выберите загруженный файл .js.
  • Нажмите кнопку "Сохранить" на ленточной панели
  • Нажмите кнопку "Опубликовать" на панели "Лента"

Добавьте свой вновь созданный веб-ресурс в свою форму (в разделе "Свойства формы" ).
Убедитесь, что это первая библиотека, указанная в вашей форме.
Вам не нужно ничего в обработчиках событий для jquery, просто назовите его из любой из ваших пользовательских библиотек, как обычно.

Имейте в виду, что многие из вещей, которые могут возникнуть при попытке использовать jquery, могут не поддерживаться. Microsoft хочет, чтобы вы использовали объект Xrm.Page:
Используйте объектную модель Xrm.Page
http://msdn.microsoft.com/en-us/library/gg328474.aspx

Согласно Microsoft:
Использование jQuery
Не используйте jQuery для взаимодействия с форматами Microsoft Dynamics CRM 2011. Используйте методы объектной модели Xrm.Page для доступа к элементам формы.
Единственное поддерживаемое использование jQuery в сети Microsoft Dynamics CRM 2011 приложение должно использовать метод jQuery.ajax для извлечения данных из
конечная точка REST. Дополнительные сведения см. В разделе Использование jQuery.
 Использование jQuery для изменения Microsoft Dynamics CRM 2011 страницы приложений или формы не поддерживаются.
 Вы можете использовать jQuery в своих собственных веб-ресурсах HTML.
http://msdn.microsoft.com/en-us/library/gg328261.aspx#BKMK_UsingjQuery >

Используйте конечную точку REST с помощью веб-ресурсов Ajax и JScript
http://msdn.microsoft.com/en-us/library/1bb82714-1bd6-4ea4-8faf-93bf29cabaad#BKMK_UsingJQuery

CRM 2011 Полезный JavaScript Tidbits
Вызовите событие onchange поля
http://www.powerobjects.com/blog/2011/01/14/crm-2011-useful-javascript-tidbits/