2010-08-31 10 views
3

Ok.La meilleure façon d'intégrer un résultat Javascript avec PHP

Fondamentalement, j'utilise l'API Google Maps - C'est Javascript.

Mon site fonctionne principalement avec PHP.

Mon intention est de faire des appels à l'API Google Maps pour obtenir la distance entre divers points de longitude et de latitude déjà géocodés. Je veux ensuite les afficher à mes utilisateurs.

Un exemple.

je (en php):

$home=array(latitude,longitude); 

J'ai aussi un résultat mysql_query de ma base de données d'emplacements.

En tant que tel, je ne

while($result=mysql_fetch_array($results)){ 

//OUTPUT THE GOOGLE MAPS JAVASCRIPT JARGON WHICH WILL FIND THE DISTANCE 
//BETWEEN MY HOME AND THE DB LOCATIONS 

} 

Dans le code exemple, la valeur est simplement émise à un div en définissant le html interne d'un div spécifié à la valeur de réponse d'une certaine requête (c'est là mon JS la connaissance devient floue).

Idéalement, je veux obtenir cette valeur dans un php var.

Y at-il de toute façon de faire:

$var=response from js thing; 

Ce que je l'ai fait au moment est essentiellement en utilisant php j'ai généré le nombre correct de divs avec de la response1 'noms, « response2 » etc que les JS Remplit .. mais cela ne semble pas être la manière la plus logique de faire les choses.

Espérons que cela a du sens. Merci

Répondre

1

Pour envoyer une réponse de JavaScript à PHP nécessite AJAX:

Si vous pouvez utiliser JQuery, qui est à peu près une norme, il est vraiment facile. Ceci est mot pour mot de l'une des leçons que j'ai écrit pour mon cours PHPPro:

receiveNumbers.php

<?php 
if (isset($_GET['sentNums'])) 
{ 
    $sentNumbers = filter_input(INPUT_GET, 'sentNums', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH); 
    // Convert to array. 
    $numbers = split(', ', $sentNumbers); 
    // Echo out. 
    echo json_encode($numbers). 
} 

index.php

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
     <title>Graph Sort | PHPExperts.pro</title> 
     <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> 
     <script type="text/javascript" src="js/jquery.json-2.2.min.js"></script> 
     <script type="text/javascript"> 
var myNumbers = '5, 10, 22, 11'; 
var receivedNumbers; 

<?php 
// Send data from JavaScript -> PHP. 
if (!isset($_GET['myData'])) 
{ 
?> 
    jQuery.getJSON('receiveNumbers.php?sentNums=' + myNumbers, function(jsonReceived) 
    { 
     receivedNumbers = jQuery.parseJSON(jsonReceived); 
     alert(receivedNumbers); // Expected [5,10,22,11] 
    }); 
<?php 
} 
?> 
     </script> 
    </head> 
</html> 
0

Je vous recommande de jeter un oeil à this part de l'API Google Maps.

+0

Merci - mais apparemment sans importance. Ive a codé le script avec l'API, et cela fonctionne. Ma question est de transmettre les résultats de JS à PHP. –

+0

Dans ce cas, vous pouvez écrire du code AJAX pour communiquer les résultats au serveur, ou rediriger vers une autre page (éventuellement la même) avec certains paramètres dans l'URL. – Valera

+0

Peut-être que vous essayez de faire quelque chose comme: Démarrer le traitement PHP, traiter JS, retourner le (s) résultat (s) de JS à PHP, terminer le traitement PHP, rendre la page. Cela sera seulement possible comme: Faire le traitement de PHP, envoyer la page à l'utilisateur, traiter JS, utiliser AJAX pour renvoyer le résultat au serveur, changer la page pour refléter le résultat de l'appel AJAX.

Ce ne serait pas possible la première façon ... – Valera

0

Oui! Je l'ai fait l'autre jour:

dans votre fichier PHP faire (pris directement à partir de mon code):

<?php 
$numbers = array(5, 2, 10, 15); 
/* Model and stuff here */ 
?> 
<html> 
    <head> 
     <script type="text/javascript"> 
// We're going to put all the info we need here, as a JS global variable. 
// If you need even more control, simply fetch it via JQuery from a PHP script that does the following. 
var numbers = <?php echo json_encode($numbers); ?> 

alert(numbers); 
// Expected output: [5,2,10,15] 
alert(numbers[2]); 
// Expected output: 10 
     </script> 
    </head> 
</html> 

Cheers!

+0

Je pense que j'ai manqué le point ici. Je travaille directement avec l'API Google Maps. Aucun autre framework, etc. Je lance donc un appel à l'API et renvoie différentes valeurs. En essayant d'obtenir cette valeur retournée par JS dans un php var. I.E l'inverse je crois. Merci –

Questions connexes