Ошибка неверного запроса при вызове пользовательского действия через Javascript - PullRequest
0 голосов
/ 03 декабря 2018

Я создал пользовательское действие в CRM 365, у которого есть один входной параметр типа объекта ссылки, и это относится к пользовательской сущности, я попытался изменить входной параметр в другой тип, и он работает хорошо.Поэтому я думаю, что проблема заключается в том, как я передаю значение ссылки на сущность, я пытался изменить его, но мне не повезло, поэтому кто-то может сказать мне, что не так в приведенном ниже коде?

function CreateBlockHistory() {
    var Id = Xrm.Page.data.entity.getId();
    Id = Id.replace("{", "").replace("}", "");
    var data = {
        "BlockedBy": {
            "ohd_blockedby": Xrm.Page.context.getUserId().replace("}", "").replace("{", ""),
            "@odata.type": "Microsoft.Dynamics.CRM.systemuser"
        }
    };
    var serverURL = window.parent.Xrm.Page.context.getClientUrl();
    var req = new XMLHttpRequest();
    req.open("POST", serverURL + "/api/data/v8.1/new_units(" + Id + ")/Microsoft.Dynamics.CRM.ohd_ActionTest", false);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("OData-MaxVersion", "4.0");
    req.setRequestHeader("OData-Version", "4.0");
    req.onreadystatechange = function () {
        if (this.readyState == 4 /* request completed */) {
            req.onreadystatechange = null;
            if (this.status == 200 /* response ready */) {
                var data = JSON.parse(this.response);
            }
            else {
                var error = JSON.parse(this.response).error;
            }
        }
    };
    req.send(window.JSON.stringify(data));
}

1 Ответ

0 голосов
/ 17 января 2019
  1. Для начала 400 Bad request - это очень общая бесполезная ошибка, вместо того, чтобы полагаться на нее - попробуйте запустить тот же фрагмент в консоли браузера или CRM REST Builder, передав жестко запрограммированные параметры guid, чтобы увидеть состояние выполнения.Вы также можете отлаживать
  2. Я вижу, что ваш XMLHttpRequest работает синхронно (bool param как false), переключите его на Async и посмотрите
  3. Также я вижу, что вы получаете Xrm контекст со смешаннымподходить как window.parent иногда и прямо иногда.window.JSON тоже.Если это выполняется в веб-ресурсе, а не в какой-либо форме сущности, то исправьте его соответствующим образом
  4. Вы можете зарегистрировать плагин для этого сообщения настраиваемого действия, профиля / отладки и посмотреть любую подсказку
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...