Read a SharePoint list using JavaScript
There are countless ways to read data from a SharePoint list, and also myriad methods to do this in JavaScript, but I’m going to document this one way as a place to get started, and a published function I can refer back to if needed!
First consider the following: Reading SharePoint list data using JavaScript requires the SP.js file to be loaded already. So, we should be putting this function inside of a $(document).ready(function())}; and if needed inside an ExecuteOrDelayUntilScriptLoaded(functionName, ‘sp.js’); Once in there, it would look something like this:
function readFromList() {
var query = new SP.CamlQuery();
query.set_viewXml(' ');
var clientContext = SP.ClientContext.get_current();
var oList = clientContext.get_web().get_lists().getByTitle('List Name');
var items = oList.getItems(query);
clientContext.load(items);
clientContext.executeQueryAsync(function () {
if (items.get_count() > 0) {
var enumerator = items.getEnumerator();
while (enumerator.moveNext()) {
var listItem = enumerator.get_current();
var field = listItem.get_item('Field Name');
}
}
}, function(sender, args) {
console.log(args.get_message());
});
I’ll go over each line to explain what’s happening:
var query = new SP.CamlQuery(); – this is preparing a CamlQuery object using SP.js (which is why it’s important to wait for it to be loaded!)
query.set_viewXml – Here’s where you define your CAML query using normal CAML syntax. In the above scenario, it will return the Title field from all items in the list.
var clientContext = SP.ClientContext.get_current(); – this establishes a client context object using the current Site Collection.
var oList = clientContext.get_web().get_lists().getByTitle(‘List Name’); – this creates an object that references the specific list in the specific web you wanted to pull items from.
var items = oList.getItems(query); – this is saying get the items from the list object based on the query defined above.
clientContext.load(items); – you’re now telling the object model to prepare to execute the following object by loading it into the client context.
clientContext.executeQueryAsync – ok, here you actually execute the query you so dutifully prepared just a moment ago. This operation expects a “Success” function and a “Failed” function to be passed in or referred to somehow. The success function will be what you want to do once the query is done executing. The failed function will be how you want to handle any issues.
In the above example, the success function looks like this:
if (items.get_count() > 0) {
var enumerator = items.getEnumerator();
while (enumerator.moveNext()) {
var listItem = enumerator.get_current();
var field = listItem.get_item('Field Name');
}
}
What this is doing is looping through the results of the query and reading each one. The key is, to read a field value the syntax is listItem.get_item(‘Field Name’). Again, lots of ways to read field data, especially system fields like ID, this is just one example.
To handle errors I simply have whatever the error message is log to the console. At this point you can do what you like with the resulting data: put it in a string array and read it later, push it out to the page, make decisions based on the results, etc. Hope this helps!