【问题标题】:Dynamics CRM Trouble Creating a Record with Javascript/HTML Web ResourcesDynamics CRM 使用 Javascript/HTML Web 资源创建记录时遇到问题
【发布时间】:2016-07-20 21:42:31
【问题描述】:

更新: 这段代码实际上确实根据需要创建了记录——令人困惑的是,成功回调没有被触发,但错误回调却被触发了。我不确定这会对未来产生什么影响。

我正在尝试使用 HTML Web 资源在动态 crm 中创建记录。正在创建的记录用于自定义实体。应该创建记录的代码如下:

function postAnswers () {
    var serverUrl = Xrm.Page.context.getClientUrl();
    var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
    var odataSetName = "new_regquestionanswersSet"
    var odataUri = serverUrl + ODATA_ENDPOINT + "/" + odataSetName;

    var answer = {};
    // Define attribute values for the CRM object you want created
    answer.new_name = "Test Answer!";

    //Parse the entity object into JSON
    var jsonAnswer = window.JSON.stringify(answer);
    //Asynchronous AJAX function to Create a CRM record using OData
    $.ajax({ type: "POST",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        url: odataUri,
        data: jsonAnswer,
        beforeSend: function (XMLHttpRequest) {
            //Specifying this header ensures that the results will be returned as JSON.
            XMLHttpRequest.setRequestHeader("Accept", "application/json");
        },
        success: function (data, textStatus, XmlHttpRequest) {
            answer = data.d;
            alert("success");
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("failure");
            console.log(textStatus);
        }
    });
}

postAnswers() 在单击嵌入在表单中的 HTML Web 资源上的按钮时运行。我不确定为什么,但这会以“失败”的形式返回,并且 textStatus 是“错误”。除此之外,我在控制台中没有收到任何明显的错误,这使得故障排除变得困难。

是否有任何可预见的原因导致此代码无法创建记录?或者为什么请求失败?非常感谢您的帮助。

【问题讨论】:

  • 可能值得用 Fiddler 捕获流量,您可能会遇到相同的“错误”,但过去我也看到了更多细节。
  • 您能否将“textStatus”错误消息发送给我们。我通常在查看此错误消息后开始。

标签: javascript html ajax crm microsoft-dynamics


【解决方案1】:

jQuery 错误回调中的第一个参数是 jqXHR object,其中包含 responseText 属性。看看那个以了解有关该错误的更多详细信息。

请注意,在 jQuery 3.0 中,errorsuccess 回调已被弃用,取而代之的是 faildone

【讨论】:

  • 感谢您的回复。原谅我的无知,但我怎么会得到那个文本?我尝试在错误回调中包含console.log(XMLHttpRequest.responseText),但控制台打印了一个空白(我知道,这种说法很奇怪。不打印未定义,但在执行 console.log 的位置上没有显示任何内容。)希望这是有道理的。
  • 这听起来像是正确的方法。我尝试在不进行任何更改的情况下运行您的代码,之后 XMLHttpRequest.responseText 包含一条警告,指出我的系统中没有 new_regquestionanswersSet。我将 var odataSetName = "new_regquestionanswersSet" 更改为 odataSetName = "AccountSet" 和 answer.new_name = "Test Answer!"回答。名称=“测试答案!”。在此之后,查询成功。您能否对默认的 Account 实体进行相同的尝试,或者在浏览器中设置一个断点来挖掘 jqXHR?
  • 更改代码以使用默认帐户实体进行测试后,我遇到了相同的行为。真正让我困惑的是代码实际上确实创建了一条新记录,但是 jQuery ajax 调用触发了错误回调。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
  • 1970-01-01
  • 2016-11-24
  • 2018-11-07
  • 2011-08-16
  • 1970-01-01
相关资源
最近更新 更多