Skip to main content
1 of 3

How to iterate through Drupal.settings (variables sent using drupal_add_js from a .php file) in a js file when there are lots of variables ...?

Am trying to create a health service locator using google maps api on my drupal 7 site. (FYI, I cant use location module or open layers, because, Create a hospital locator in drupal 7 )

K now, I have a form, which takes user's location, kind of service (eg, hospital, pharmacy etc) and the proximity around which they wish to find the result, using google maps api and google places api I fetch the results (details about those near by places such as hospital) in json format from google. The fetched data, include, each place's name,address,rating,phone number,lattitude,longitude etc. now I store those values in form_state['storage'] and then send it to the js file using drupal_add_js() method.

The below code is sending the values,

<?php
for($i=0;$i<$length;$i++)
 {
  drupal_add_js(array('a'.$i =>array(
             'lat'=> $form_state['storage']['results'][$i]['geometry']['location']['lat'],
             'long'=> $form_state['storage']['results'][$i]['geometry']['location']['long'],  
         'name'=>  $form_state['storage']['results'][$i]['name'],
         'rating'=>$form_state['storage']['results'][$i]['rating'],
         'vicinity'=>$form_state['storage']['results'][$i]['vicinity'],
         'formatted_address'=>$form_state['storage']['results'][$i]['formatted_address'],
         'international_phone_number'=>$form_state['storage']['results'][$i]['international_phone_number'],
         'website'=>$form_state['storage']['results'][$i]['website'],
)),'setting');

}
?>.

the details of first place is in a0, second place detail is in a1 etc.

FYI, each place details are in Drupal.settings.a0, Drupal.settings.a1 etc. I mean, I can access those variables in js file using,

Drupal.settings.a0.name and Drupal.settings.a0.website similarly for second place, Drupal.settings.a1.name etc.

Now my problem is I need to iterate through these different places.

I can iterate through different variables of one particular place usin the below for loop,

for(var x in Drupal.settings.a0)
{
 alert(Drupal.settings.a0.x);
}

But, I cant iterate through different places, like a0, a1 etc. I mean I cant attach a variable to drupal.settings..!

I tried tried putting all places in an array, i.e, a0,a1,a2 are in an array named arr[] (I have the total no. of places in Drupal.settings.my_vars.length) then, I iterate through this array and tried attaching arr[i] to Drupal.settings as Drupal.settings.arr[i].x but it doesn't work.

How can I do it...?? Is there any better way of achieving it...??

Thanks in advance.