This post is article 20 from the 30 Articles App series for SharePoint
I assume you have read article -19 to understand basic about cross-domain calls in SP Apps.
In this article I will discuss about implementing cross-domain communication from an SharePoint app.
- Let’s get started with placing SP.RequestExecuter.js library ( you can find this in LAYOUTS folder ) into you app project. you can put this file in scripts folder in your app project.
- Register the trusted domain(s) in your app manifest like below.
Lets say for example I want to put otherdomain.com as a trusted domain so I am registering that as following.<AppPrincipal> <Internal AllowedRemoteHostUrl="https://otherdomain.com/" /> </AppPrincipal>
- With this library you can use REST or JSOM to communicate with SharePoint
- For REST option you will need to create a new SP.RequestExecutor as following.
var executor = new SP.RequestExecutor(appweburl); executor.executeAsync( { url: appweburl + "/_api/SP.AppContextSite(@target)/web/lists/getbytitle('aanuslist')?@target='" + targeturl+ "'" , method: "GET", headers: { "Accept": "application/json; odata=verbose" }, success: successHandler, error: errorHandler } ); - If you choose JSOM then get client context as below.
var context = new SP.ClientContext(appweburl); // context: The ClientContext object provides access to the web and lists objects. var factory = new SP.ProxyWebRequestExecutorFactory(appweburl); // factory: Initialize the factory object with the app web URL. context.set_webRequestExecutorFactory(factory); var contextt = new SP.AppContextSite(context, targeturl); //Get the web and list objects and prepare the query var web = contextt.get_web(); var list = web.get_lists().getByTitle("aanuslist"); var camlString = "<View> <ViewFields>" + "<FieldRef Name='Title' />" + "</ViewFields> </View>"; var camlQuery = new SP.CamlQuery(); camlQuery.set_viewXml(camlString); allItems= list.getItems(camlQuery); context.load(allItems, "Include(Title)"); //Execute the query with all the set options and parameters context.executeQueryAsync(successHandler, errorHandler); - Make sure in both scenarios your page includes reference to the cross-domain js library
Happy reading… and see you guys for the next article 🙂

