0

I have a common error on JSOM SharePoint 2013. I have a function below

    function getTasks() {        
        var context = new SP.ClientContext(appWebUrl);
        var web = context.get_web();
        context.load(web);
        var splist = web.get_lists().getByTitle("Gorevler");
        var taskQuery = new SP.CamlQuery();
        taskQuery.set_viewXml("<View><Query>" +
                          "<Where><Eq><FieldRef Name='AssignedTo' LookupId='True' /><Value Type='Integer'>" + currentUserId + "</Value></Eq></Where></Query>" +
                          "<ViewFields><FieldRef Name='Title' /><FieldRef Name='AssignedTo' /><FieldRef Name='StartDate' /><FieldRef Name='DueDate' /></ViewFields></View>");
        var taskQueryItems = splist.getItems(taskQuery);
        context.load(taskQueryItems);
        context.executeQueryAsync(
                Function.createDelegate(this, successHandler),
                Function.createDelegate(this, errorHandler)
    );

    function successHandler() {
        var taskAdet = taskQueryItems.get_count();
        alert("Adet : " + taskAdet);
    }

    function errorHandler(sender, args) {
        alert("Hata");
    }

When I re-run the code above it gives me : "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." Why I have to refresh the page to get successfull results? Is there a way to get right result on every execution?

Thanks

Can PERK
  • 590
  • 8
  • 24

1 Answers1

0

Just remove your context.load(web).

function getTasks() {        
    var context = new SP.ClientContext(appWebUrl);
    var web = context.get_web();

    context.load(web); // <-- This is your problem. 

    var splist = web.get_lists().getByTitle("Gorevler");
    var taskQuery = new SP.CamlQuery();
    taskQuery.set_viewXml("<View><Query>" +
                      "<Where><Eq><FieldRef Name='AssignedTo' LookupId='True' /><Value Type='Integer'>" + currentUserId + "</Value></Eq></Where></Query>" +
                      "<ViewFields><FieldRef Name='Title' /><FieldRef Name='AssignedTo' /><FieldRef Name='StartDate' /><FieldRef Name='DueDate' /></ViewFields></View>");
    var taskQueryItems = splist.getItems(taskQuery);
    context.load(taskQueryItems);
    context.executeQueryAsync(
            Function.createDelegate(this, successHandler),
            Function.createDelegate(this, errorHandler)
);

To:

function getTasks() {        
    var context = new SP.ClientContext(appWebUrl);
    var splist = context.get_web().get_lists().getByTitle("Gorevler");

    var taskQuery = new SP.CamlQuery();
    taskQuery.set_viewXml("<View><Query>" +
                      "<Where><Eq><FieldRef Name='AssignedTo' LookupId='True' /><Value Type='Integer'>" + currentUserId + "</Value></Eq></Where></Query>" +
                      "<ViewFields><FieldRef Name='Title' /><FieldRef Name='AssignedTo' /><FieldRef Name='StartDate' /><FieldRef Name='DueDate' /></ViewFields></View>");
    var taskQueryItems = splist.getItems(taskQuery);
    context.load(taskQueryItems);
    context.executeQueryAsync(
            Function.createDelegate(this, successHandler),
            Function.createDelegate(this, errorHandler)
);
brroshan
  • 1,640
  • 17
  • 19