Передача переменной Wordpress в JS - PullRequest
0 голосов
/ 22 декабря 2011

У меня проблема с использованием переменной WordPress в jquery. WordPress работает хорошо (я подозреваю), но в моем JS я не получаю там.

Рабочий код вы можете увидеть здесь: http://www.gport.nl/dev/pluginshop/gallery/geodata/

Я передаю переменную следующим образом:

$test2[] = array(
    'latitude' => $neg_lat.number_format($lat,6),
    'longitude' => $neg_lng.number_format($lng,6),
    'html' => '<img src='.$thumbnail[0].'/><p>'.$title.'</p>'
);

wp_register_script( 'backend_map_script_geo', ''.WP_PLUGIN_URL.'/magic-gallery/js/frontendmap_geo.js', null, null);
wp_enqueue_script( 'backend_map_script_geo');
wp_localize_script( 'backend_map_script_geo', 'markers', json_encode($test2));

и со следующим JS:

jQuery(document).ready(function() {

    var adress_test = jQuery.parseJSON(markers);

    alert(adress_test);
    console.log(adress_test);

    var map2 = jQuery("#testmap");
        map2.gMap({

            markers: [

                adress_test

            ],

        zoom: "fit",
        latitude: "fit",
        longitude: "fit",
        onComplete: function() {
            var center = map2.data('gmap').gmap.getCenter();
        }
    });

});

Результат, который я получаю из выходов оповещения:

{latitude:59.329500,longitude:18.111167,html:"<img src=http://www.gport.nl/dev/pluginshop/wp-content/uploads/2011/11/IMG_0522-100x100.jpg/><p>IMG_0522</p>"},{latitude:53.197572,longitude:5.797106,html:"<img src=http://www.gport.nl/dev/pluginshop/wp-content/uploads/2011/11/IMAG0183-100x100.jpg/><p>IMAG0183</p>"},{latitude:51.523000,longitude:0.106167,html:"<img src=http://www.gport.nl/dev/pluginshop/wp-content/uploads/2011/11/IMG_0818-100x100.jpg/><p>IMG_0818</p>"},

И это именно то, что мне нужно. Однако когда я использую переменную внутри markers:, она не работает.

Когда я вставляю код, который был предупрежден в JS, вот так:

jQuery(document).ready(function() {

    var adress_test = backendmapparams;

    alert(adress_test);

    var map2 = jQuery("#testmap");
        map2.gMap({

            markers: [

                {latitude:59.329500,longitude:18.111167,html:"<img src=http://www.gport.nl/dev/pluginshop/wp-content/uploads/2011/11/IMG_0522-100x100.jpg/><p>IMG_0522</p>"},{latitude:53.197572,longitude:5.797106,html:"<img src=http://www.gport.nl/dev/pluginshop/wp-content/uploads/2011/11/IMAG0183-100x100.jpg/><p>IMAG0183</p>"},{latitude:51.523000,longitude:0.106167,html:"<img src=http://www.gport.nl/dev/pluginshop/wp-content/uploads/2011/11/IMG_0818-100x100.jpg/><p>IMG_0818</p>"},

            ],

        zoom: "fit",
        latitude: "fit",
        longitude: "fit",
        onComplete: function() {
            var center = map2.data('gmap').gmap.getCenter();
        }
    });

});

Все работает как положено. Я полагаю, что я делаю что-то не так, но не могу понять, что это такое. Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 22 декабря 2011

Ваши backendmapparams заключены в кавычки?Функция Alert не будет жаловаться на вывод строки, в то время как markers будет ожидать и object, а не string.Я спрашиваю об этом, потому что если бы backendmapparams было на самом деле Object, вы бы получили [object Object] в своем сообщении, а не

{latitude:59.329500,longitude:18.111167,html:"<img src=http://www.gport.nl/dev/pluginshop/wp-content/uploads/2011/11/IMG_0522-100x100.jpg/><p>IMG_0522</p>"},{latitude:53.197572,longitude:5.797106,html:"<img src=http://www.gport.nl/dev/pluginshop/wp-content/uploads/2011/11/IMAG0183-100x100.jpg/><p>IMAG0183</p>"},{latitude:51.523000,longitude:0.106167,html:"<img src=http://www.gport.nl/dev/pluginshop/wp-content/uploads/2011/11/IMG_0818-100x100.jpg/><p>IMG_0818</p>"},

, что String.

0 голосов
/ 22 декабря 2011

Используйте jQuery.parseJSON для декодирования результата JSON (это просто строка, когда вы его получаете)

...