2010-03-01 7 views
1

Est-il possible (et si oui s'il vous plaît expliquer comment) à l'écho php en javascript, spécifiquement pour mon but, je suis en train d'écho l'entrée d'un champ personnalisé de la plate-forme wordpress dans la description d'un Google Map. J'espère que je peux donner au client un backend cms pour entrer le texte qui apparaît dans les points de marqueur sur une carte. Ce que je suis en train sans succès:Echo php dans google map javascript

var point = new GLatLng(49.295308,-123.149297); 
var marker = createMarker(point,"Site Title",'<div class="maptext"><p class="prepend-top caption">Title<\/p> 

    <?php $the_query = new WP_Query('category_name=featured'); 
    while ($the_query->have_posts()) : $the_query->the_post();?> 
    <?php if (get_post_meta($post->ID, 'site-description', true)) { ?> 
    <?php echo get_post_meta($post->ID, 'site-description', $single = true); ?> 
    <?php } ?> 
    <\/div>') 
      map.addOverlay(marker); 

sarfaz ok avait raison avec sa réponse Orignal et je recevais une erreur d'analyse qui a été le casser. ce qui a finalement travaillé était le suivant:

var point = new GLatLng(48.134239,-122.764769); 
     var marker = createMarker(point,"Port Townsend Marine Science Center",'<div class="maptext"><?php $the_query = new WP_Query('post_name=test-site'); 
while ($the_query->have_posts()) : $the_query->the_post();?><?php if (get_post_meta($post->ID, 'map-content', true)) { ?><?php echo get_post_meta($post->ID, "map-content", $single = true); ?><?php } ?><?php endwhile; ?><\/div>') 
     map.addOverlay(marker); 

--- MISE À JOUR ---

Je voulais juste ajouter que je trouve que ce soit le meilleur moyen pour moi de saisir les messages que je veux toujours un spécifique lié à ce marqueur:

var point = new GLatLng(48.5139,-123.150531); 
    var marker = createMarker(point,"Lime Kiln State Park", 
    '<?php $post_id = 182; 
$my_post = get_post($post_id); 
$title = $my_post->post_title; 
echo $title; 
echo $my_post->post_content; 
?>') 
     map.addOverlay(marker); 
+0

Publiez également le code source généré; il y a probablement une erreur dans votre JS. – mpen

+0

aucune erreur dans le js, au moins selon firebug, et la carte fonctionne très bien jusqu'à ce que j'essaie d'injecter ce php – Zac

Répondre

1

Oui, ce qui est sûrement possible d'avoir php écho dans le code JavaScript. Dans votre code, il vous manque le endwhile donc seulement la première ligne suivante de votre code s'exécute vous causant un résultat inattendu.

Mise à jour: Essayez ette:

var point = new GLatLng(49.295308,-123.149297); 
var marker = createMarker(point,"Site Title","<div class=\"maptext\"><p class=\"prepend-top caption\">Title</p> 

    <?php $the_query = new WP_Query('category_name=featured'); 
    while ($the_query->have_posts()) : $the_query->the_post();?> 
    <?php if (get_post_meta($post->ID, 'site-description', true)) { ?> 
    <?php echo get_post_meta($post->ID, 'site-description', $single = true); ?> 

    </div>") 
      map.addOverlay(marker); 
    .................. 
+0

Merci d'avoir essayé, mais échapper les citations ne aide pas. J'ai essayé de nombreuses variantes, y compris dépouiller tous les css pour voir si cela aide, mais rien ne semble fonctionner – Zac

+0

Ahh vous aviez raison la première fois. c'était juste une erreur d'analyse dans le php. Merci! – Zac

+0

@zac: ce sont de bonnes nouvelles :) – Sarfraz

0

Je pense que le problème vient simplement des nouvelles lignes que vous générez dans la chaîne javascript. La sortie du code sera quelque chose comme ceci:

var marker = createMarker(point,"Site Title","<div class="\maptext\"><p class=\"prepend-top caption\">Title</p> 
    thedatafromyourquery 
    </div>") 

ce que vous voulez avoir quelque chose comme ceci:

var marker = createMarker(point,"Site Title","<div class="\maptext\"><p class=\"prepend-top caption\">Title</p>" + 
    "thedatafromyourquery" + 
    "</div>") 

Hope this helps.

+0

merci, mais non qui n'a pas aidé – Zac

+0

serait-il possible d'afficher l'ensemble du code source généré par le javascript? – kufi