2011-12-22 15 views
0

jqueryでwordpress生成変数を使用している問題があります。ワードプレス側はうまく動作します(私は疑います)が、私のjsでは私はそこに着いていません。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(); 
     } 
    }); 

}); 

結果Iこのように警告出力から抜け出す:

{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(); 
     } 
    }); 

}); 

すべてが動作します。私は何か間違っていると思いますが、それが何であるか把握できないようです。どんな助けでも大歓迎です!

+0

あなたの 'adress_test'は間違いなく' Object'ですか? 'alert(typeof adress_test)'を実行してみてください。 – jabclab

+0

php.net/json_encode – shesek

+0

これはまだ文字列ですが、 'jQuery.parseJSON'はこれを処理してはいけませんか? –

答えて

0

使用jQuery.parseJSON JSON結果を復号化する(それはあなたがそれを入手するには、文字列です)

+0

私はPHP側でjson_enodeについて話していると仮定していますか?私はこれを試しましたが、違いがありません:) –

0

は引用符で囲まれたあなたのbackendmapparamsていますか? Alert関数は文字列を出力することには不満はありませんが、markersは期待し、objectstringではありません。 backendmapparamsが実際にObjectだった場合、あなたはStringであるあなたの警告メッセージで[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>"},

になるだろうので、私はこれを聞いていますのよ。

+0

dorianの 'jQuery.parseJSON(backendmapparams);'を使用した後、引用符はなくなりましたが、コードは依然として機能していません。しかし、明確なexplainationありがとう:) ここで方法で確認することができます:http://www.gport.nl/dev/pluginshop/gallery/geodata/ –

関連する問題