[SalesForce] Pass array of objects from apex controller to javascript

So I have a some java script where I want to pass a list of Objects from a controller and get a number of fields. However, I'm having issues passing the individual variables.

However, I'd rather call the controller (I think it's better form)

Apex:

public List<Activity__C> getActs(){
        myActs = [select Task_Site__c, Activity_Date__c, Activity_Time_Stamp__c,GeoCode__Latitude__s, GeoCode__Longitude__s, workday__r.owner.name
                  from Activity__c 
                  where workday__r.ownerid =: curUser and Activity_Date__c =: filter ];        
        return myActs;
    }

Javascript/VF

From my controller how can I access the Task_Site__C and other fields via Javascript?

<script type="text/javascript">

        var result = new Array();
        result = '{!Acts}';
        //sforce.connection.sessionId  = "{!$Api.Session_ID}";    
        //sforce.connection.query('select Task_Site__c, Activity_Date__c, Activity_Time_Stamp__c,GeoCode__Latitude__s, GeoCode__Longitude__s, workday__r.owner.name from Activity__c');

        for (var i=0; i < result.length; i++)
        {
            console.log(result[i].Task_site__c);
         }
}

Best Answer

My advice is to keep the query in Javascript. Much simpler to keep all the logic in one place than try to route server logic into client code when you can avoid it.

You can, however, use a serialized array property.

public String mySerializedList { get; private set; }
public MyConstructor()
{
    mySerializedList = JSON.serialize([/*some query*/]);
}

Then in your client-side application you can parse it.

var objectArray = JSON.parse('{!JSINHTMLENCODE(mySerializedList)}');
Related Topic