Sunday, June 18, 2017

SharePoint jQuery generic call to get rest data

Lately I've been working with SharePoint a lot and creating functions to read data from lists and manipulate / display it to the user.  Below are two generic JS / jQuery functions that I created to do this.

I've explained the parameters so hopefully you will find it useful.

// inListSiteURL is the base URL of the SharePoint site... such as https://somespsite.somedomain.com or https://somespsite.somedoamin.com/someSubSite
// inListTitle is the title of the SharePoint list
// inHaveResultsFunction is the function to call when data is found
// inNoResultsFunciton is the function to call when no data is found
// inFilter is the filter to use... maybe something like "?$select=Title,URL&$top=100&$filter=Editor/Id%20eq%20123&$orderby=Title asc"... you can leave this blank if you want
// inFinalFunction is the function to call after all results
function spGetListData(inListSiteURL, inListTitle, inHaveResultsFunction, inNoResultsFunction, inFilter, inFinalFunction)
{
    try {
        var callURL = inListSiteURL + "/_api/web/lists/GetByTitle('" + inListTitle + "')/items" + inFilter;
        spGetRestDataCall(callURL, inHaveResultsFunction, inNoResultsFunction, null, inFinalFunction);
    } catch(err) {
        
    }
} // function spGetListData


// this function is a 'generic' ajax call used by the other functions to simplify the code
// inURL is the URL to the SharePoint list to retrieve data from
// inSuccessFunction is the function to call when data is returned
// inNoResultFunction is the function to call when no data is returned
// inErrorFunction is the function to call when an error is encountered
// inFinalFunction is the function to call when after all the data is processed
function spGetRestDataCall(inURL, inSuccessFunction, inNoResultFunction, inErrorFunction, inFinalFunction)
{
    var spRestContentType = "application/json;odata=verbose"; // you should not have to change this
    $.ajax({
        url: inURL,
        method: "GET",
        processData: false,  
        contentType: spRestContentType,
        headers: { "Accept": spRestContentType },
        success: function (data) {
            try {
                if (data.d.results.length == 0) {
                    if (inNoResultFunction !== null) {
                        inNoResultFunction();
                    }
                } else {
                    $.each(data.d.results, function(index, item){
                        inSuccessFunction(index,item);
                    });
                    if (inFinalFunction !== null) {
                        inFinalFunction();
                    }
                }
            } catch(err) {
                inSuccessFunction(data.d);
            }
        },
        error: function (data) {
            //console.log(JSON.stringify(data));
            if (inErrorFunction !== null) {
                inErrorFunction(data);
            }
        }
    });
} // function spGetRestDataCall

No comments:

Post a Comment

Comments are moderated. We're only going to allow stuff that we find funny, interesting, or just plain for the heck of it. If you don't like that, feel free to leave.

Copyright Realm Laboratories, LLC