In the code I tried to get the data from 2 different LIST. Input of the second query will be done after executing first list. $(document).ready(function(){ $("#SearchButton").click(function() { ExecuteOrDelayUntilScriptLoaded(function getData(){ var ctx=SP.ClientContext.get_current(); var SearchItem = document.getElementById('item').value; var oList = ctx.get_web().get_lists().getByTitle('All Dictionary items'); var camlQuery = new SP.CamlQuery(); camlQuery.set_viewXml('<view><Query><Where><Eq><FieldRef Name=\'Title\'/><Value Type=\'Text\'>' + SearchItem + '</Value></Eq></Where>'+ '</Query><RowLimit>10</RowLimit>'+ '</view>'); this.collListItem = oList.getItems(camlQuery); ctx.load(this.collListItem,'Include(Title, Id,SL,Description,Type1)'); ctx.executeQueryAsync( function (sender, args) { var listItemEnumerator = collListItem.getEnumerator(); while (listItemEnumerator.moveNext()) { var oListItem = listItemEnumerator.get_current(); listItemInfoID = oListItem.get_item('SL').toString(); listItemInfo = oListItem.get_item('Type1').toString() + ' ' + oListItem.get_item('SL').toString();//for searching next list itemDescription = oListItem.get_item('Description').toString(); } var desp = itemDescription.toString(); var despCorrection = desp.replace("</font>"," "); despCorrection = despCorrection.substring(35); document.getElementById('Descriptions').value = despCorrection; document.getElementById('SearchedItem').value = listItemInfo.toString(); alert('here'+ listItemInfoID); }, function (sender, args) {alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());} ); }, "sp.js"); alert('start new'); var ContextForRelatedItem=SP.ClientContext.get_current(); var oListForRelationItem = ContextForRelatedItem.get_web().get_lists().getByTitle('RelationWithIds'); var camlQueryForRelatedItem = new SP.CamlQuery(); camlQueryForRelatedItem.set_viewXml('<view><Query><Where><Eq><FieldRef Name=\'Word_SL_No\'/><Value Type=\'Number\'>' + listItemInfoID + '</Value></Eq></Where>'+ '</Query><RowLimit>10</RowLimit>'+ '</view>'); alert('after query'); this.collListItemForRelationItem = oListForRelationItem.getItems(camlQueryForRelatedItem); ContextForRelatedItem.load(this.collListItemForRelationItem,'Include(Title, Id,Linked_To,Relation_No)'); alert('after load'); ContextForRelatedItem.executeQueryAsync(function (sender, args) { alert('in execute'); var listItemEnumerator2 = collListItem.getEnumerator(); document.getElementById('relation1item').value = ''; document.getElementById('relation2item').value = ''; while(listItemEnumerator2.moveNext()){ var oListItemForRelation = listItemEnumerator2.get_current(); alert('in while'); listItemInfoForRelationItem = oListItemForRelation.get_item('Relation_No').toString();//This alert is not getting triggered. alert('in here jyfkufkuyfbjh'+ listItemInfoForRelationItem.toString() +'here'); relatedItems = oListItemForRelation.get_item('Linked_To');} alert('values are'+'\n'+relatedItems.toString()); alert('fine'); Alerts are getting triggered before oListItemForRelation.get_item('Relation_No').toString(). If I put oListItemForRelation.get_item('Description').toString() than the alert gets triggered and the value of previous list returned. Please help. Please advise me if the approach is wrong. I have to pass a value from one column of a list to another list.