2016-07-19 42 views
1

更新:此代碼實際上確實創建了所需的記錄 - 但令人困惑的是成功回調未被觸發,但錯誤回調爲。我不確定這會有什麼影響。動態CRM麻煩用Javascript/HTML Web資源創建記錄

我正在嘗試使用HTML網絡資源在動態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網絡資源一鍵點擊運行。我不確定爲什麼,但是這會回來,因爲「失敗」,textStatus是「錯誤」。除此之外,我沒有在控制檯中發現任何明顯的錯誤,這使得難以排除故障。

有沒有任何可預見的原因,爲什麼這段代碼無法創建記錄?或者爲什麼請求失敗?非常感謝您的幫助。

+1

值得用Fiddler捕捉流量,你可能會得到同樣的「錯誤」,但是在過去我也看到了額外的細節。 –

+0

您可以向我們發送「textStatus」錯誤消息。我通常在查看此錯誤消息後開始。 –

回答

1

jQuery錯誤回調中的第一個參數是jqXHR object,其中包含responseText屬性。看看這個,看看有關錯誤的更多細節。

請注意,errorsuccess回調在jQuery 3.0中不推薦使用faildone

+0

感謝您的回覆。請原諒我的無知,但我將如何獲得該文本?我嘗試在錯誤回調中包含'console.log(XMLHttpRequest.responseText)',但是控制檯打印出一個空白(我知道這是一個奇怪的方式,不會打印未定義的內容,但是console.log執行時不顯示任何內容。 )希望是有道理的。 –

+0

這聽起來像是正確的做法。我試着運行你的代碼,沒有任何改變,之後XMLHttpRequest.responseText包含一個警告,我沒有在我的系統中有一個new_regquestionanswersSet。 我將var odataSetName =「new_regquestionanswersSet」更改爲odataSetName =「AccountSet」,answer.new_name =「測試答案!」 answer.Name =「測試答案!」。在此之後,查詢成功。你可以嘗試與默認的Account實體相同,否則在瀏覽器中設置一個斷點來挖掘jqXHR? –

+0

將代碼更改爲使用默認Account實體進行測試後,我遇到了同樣的行爲。真正令我困惑的是,代碼實際上是**創建了一條新記錄,但jQuery ajax調用會觸發錯誤回調。 –