When creating a provider hosted app/add-in, how would you access a list located on a sub-site of the page it was installed on? I can access lists at the top-level of the Host web using the below syntax, but can't figure out the syntax to get any other lists from the Host web that have been created in sub-sites of the Host web. No matter how I alter the path's, I can't get it to bring in these lists, just constant 404 errors.
// To get list information from the top-level
var getQueryStringParameter = function (p) {
var params = document.URL.split("?")[1].split("&");
var strParams = "";
for (var i = 0; i < params.length; i = i + 1) {
var singleParam = params[i].split("=");
if (singleParam[0] == p)
return singleParam[1];
}
};
var hostweburl;
var appweburl;
// Load the required SharePoint libraries
$(document).ready(function () {
//Get the URI decoded URLs.
hostweburl = decodeURIComponent(getQueryStringParameter("SPHostUrl"));
appweburl = decodeURIComponent(getQueryStringParameter("SPAppWebUrl"));
// resources are in URLs in the form:
// web_url/_layouts/15/resource
var scriptbase = hostweburl + "/_layouts/15/";
// Load the js files and continue to the successHandler
$.getScript(scriptbase + "SP.RequestExecutor.js", execCrossDomainRequest);
});
function execCrossDomainRequest() {
var executor = new SP.RequestExecutor(appweburl);
executor.executeAsync(
{
url: appweburl + "/_api/SP.AppContextSite(@target)/web/lists/getbytitle('Goals')/items?@target='" + hostweburl + "'",
method: "GET",
headers: { "Accept": "application/json; odata=nometadata" },
success: retrievedGoalsList,
error: errorGettingGoalsList
}
);
// Success function
function retrievedGoalsList(data) {
// This returns list information successfully if list is in the Host web
}
// Error function
function errorGettingGoalsList(err) {
console.log("Async call failed with error: ", err);
}
}