Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Retrieving Multiple Records OData java Scripts Microsoft Dynamics CRM

I am using the following java script code to retrieve contacts by account Id. I am set setting the alert message debugging. It does not enter in success call back message function.

Ending up with following error

Error while retrieval "error" : { "lang":"en-US", "Value":"Syntax error'\ufffd' at position 20." }

I am using the following code.

function retrieveMultiple(odataSetName, select, filter, successCallback) {
    var serverUrl = Xrm.Page.context.getServerUrl();
    var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
    var odataUri = serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "?";

    alert("retrieveMultiple"+odataUri);

    if (select) {
        odataUri += "$select=" + select + "&";
        alert("select error="+odataUri);
    }

    if (filter) {
       odataUri += "$filter=" + filter;
       alert("filter error="+odataUri);
    }

    $.ajax({
       type: "GET",
       contentType: "application/json; charset=utf-8",
       datatype: "json",
       url: odataUri,
       beforeSend: function (XMLHttpRequest) {
           //Specifying this header ensures that the results will be returned as JSON.
           var x = XMLHttpRequest.setRequestHeader("Accept", "application/json");
           alert(" in Ajax :beforeSend:" + x );
       },
       success: function (data, textStatus, XmlHttpRequest) {
           alert("In success function outside success");

           if (successCallback) {
               alert("successCallback in if");

               if (data && data.d && data.d.results) {
                   alert("data && data.d && data.d.results"+data + data.d + data.d.results);
                   successCallback(data.d.results, textStatus, XmlHttpRequest);
                   alert("data.d.results, textStatus, XmlHttpRequest" + data.d.results + textStatus +       XmlHttpRequest);
                }
                else if (data && data.d) {
                     successCallback(data.d, textStatus, XmlHttpRequest);
                }
           else {
               successCallback(data, textStatus, XmlHttpRequest);
           }
       }
    },
    error: function (XmlHttpRequest, textStatus, errorThrown) {
        alert(" In erro function");

        if (XmlHttpRequest && XmlHttpRequest.responseText) {
           alert(" In error function If");
           alert("Error while retrieval ; Error – " + XmlHttpRequest.responseText);
        }
    }
});
}

function readRecordsOnSuccess(data, textStatus, XmlHttpRequest) {
    // Loop through the retrieved records
    for (var indx = 0; indx < data.length; indx++) {
         alert("Name – " + data[indx].name);
    }
}

function retrieveContactsByAccountId() {
    // Pass ‘Contact’ set name since we are reading Contacts
    var oDataSetName = "ContactSet";

    // Column names of ‘Contact’ (Pass * to read all columns)
    var columns = "FirstName";

    // Read Account Guid
    var accountId = Xrm.Page.data.entity.getId()

    // Prepare filter
    var filter = "AccountId/Id eq guid’" + accountId + "‘";

    alert("retrieveContactsByAccountId"+filter);

    retrieveMultiple(oDataSetName, columns, filter, readRecordsOnSuccess);
}
like image 314
ozil Avatar asked Jul 30 '26 00:07

ozil


1 Answers

Looks like common mistype ;) Notice following string you are passing:

var filter = "AccountId/Id eq guid’" + accountId + "‘";

Your apostrophes are different from usual ones

You need to use regular '

var filter = "AccountId/Id eq guid'" + accountId + "'";
like image 144
SergeyS Avatar answered Jul 31 '26 14:07

SergeyS



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!