I get the following error in SharePoint 2010 using JSOM and not sure why. The error occurs when I get to "pp_OnQuerySucceeded()".
The collection has not been initialized. It has not been requested or the request has not been executed. It may need to be explicitly requested.
// JavaScript source code$(document).ready(function () {
SP.SOD.executeOrDelayUntilScriptLoaded(retrieveData, "sp.js");
});
function retrieveData() {
getListData("Project Module", "pm_OnQuerySucceeded", "queryError");
getListData("Project Projections", "pp_OnQuerySucceeded", "queryError");
}
var getQueryString = function (field, url) {
var href = url ? url : window.location.href;
var reg = new RegExp('[?&]' + field + '=([^&#]*)', 'i');
var string = reg.exec(href);
return string ? string[1] : null;
};
function getListData(listName) {
var clientContext = new SP.ClientContext();
var oList = clientContext.get_web().get_lists().getByTitle(listName);
if (getQueryString('projNumber')) {
if (listName == "Project Module")
var prjQry = "<View><Query><Where><Eq><FieldRef Name='Project_x0020_Number' /><Value Type='Text'>" + getQueryString('projNumber') + "</Value></Eq></Where></Query><ViewFields><FieldRef Name='Title' /><FieldRef Name='Project_x0020_Number' /><FieldRef Name='Station_x0020_Name' /><FieldRef Name='BSN' /><FieldRef Name='Station_x0020_Number' /><FieldRef Name='Total_x0020_Project_x0020_Cost' /></ViewFields></View>";
else
var prjQry = "<View><Query><Where><Eq><FieldRef Name='Project_x0020_Number' /><Value Type='Text'>" + getQueryString('projNumber') + "</Value></Eq></Where></Query><ViewFields><FieldRef Name='BSN' /></ViewFields></View>";
}
else {
var prjQry = "<View><Query></Query></View>";
}
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml(prjQry);
this.collListItem = oList.getItems(camlQuery);
clientContext.load(collListItem);
if (listName == "Project Module") {
clientContext.executeQueryAsync(
Function.createDelegate(this, this.pm_OnQuerySucceeded),
Function.createDelegate(this, this.queryError)
);
}
else {
clientContext.executeQueryAsync(
Function.createDelegate(this, this.pp_OnQuerySucceeded),
Function.createDelegate(this, this.queryError)
);
}
}
function pm_OnQuerySucceeded(sender, args) {
var listItemInfo = '';
var listItemEnumerator = collListItem.getEnumerator();
while (listItemEnumerator.moveNext()) {
var oListItem = listItemEnumerator.get_current();
$('#bsn').val(oListItem.get_item('BSN'));
$("#projTitle").val(oListItem.get_item('Title'));
$('#station').val(oListItem.get_item('Station_x0020_Number'));
$('#stationName').val(oListItem.get_item('Station_x0020_Name'));
$('#projNumber').val(oListItem.get_item('Project_x0020_Number'));
$('#totProjCost').val(oListItem.get_item('Total_x0020_Project_x0020_Cost'));
}
}
function pp_OnQuerySucceeded(sender, args) {
var listItemInfo = '';
var listItemEnumerator = collListItem.getEnumerator();
while (listItemEnumerator.moveNext()) {
var oListItem = listItemEnumerator.get_current();
$('#designPlan').val(oListItem.get_item('BSN'));
}
}
function queryError(sender, args) {
alert('Request failed. ' + args.get_message() +
'\n' + args.get_stackTrace());
}
I notice that if I comment out the following line, "getListData("Project Projections", "pp_OnQuerySucceeded", "queryError");", it works.
Any help would be appreciated. Thanks!