1

Currently using this simplified code to pass data from WP to JS.

function add_map_data() {

        $objName = "MapData";
        $array = array(
            "MapViewLatitude" => "51.505",
            "MapViewLongitude" => "-0.09",

        );

        wp_enqueue_script( 'mapdata', get_bloginfo('template_url').'/custom/map.js', null, null, false );
        wp_localize_script( 'mapdata', $objName, $array );
}
add_action( 'wp_enqueue_scripts', 'add_map_data');

The only issue is that this is passing object.
How can I pass data in JSON format?

Any suggestion much appreciated.

1 Answer 1

1

Try wrapping your array in json_encode():

function add_map_data() {

        $objName = "MapData";
        $array = array(
            "MapViewLatitude" => "51.505",
            "MapViewLongitude" => "-0.09",

        );

        wp_enqueue_script( 'mapdata', get_bloginfo('template_url').'/custom/map.js', null, null, false );
        wp_localize_script( 'mapdata', $objName, array('my_arr' =>json_encode($array)));
}
add_action( 'wp_enqueue_scripts', 'add_map_data');

Next step is to parse the JSON string back to a JSON object in JavaScript so:

//first escape the string then parse this string and convert it into a JSON object
var MapDataJSON = jQuery.parseJSON(MapData.my_arr.replace(/"/g, '"'));

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.