recherche

Maison  >  Questions et réponses  >  le corps du texte

"Conversion de variables JavaScript en PHP : variables Javascript converties en PHP"

Je me demande donc s'il existe un moyen de transmettre des variables Javascript en PHP. Je crée un script qui obtient un emplacement à partir d'un site Web et insère cet emplacement dans MySQL pour obtenir des données analytiques.

Voici ma fonction Javascript :

function getPosition(position)
{
  const latitude = position.coords.latitude;
  const longitude = position.coords.longitude;
  const geoApiUrl = 'https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=${latitude}&longitude=${longitude}';
  fetch(geoApiUrl)
  .then(res => res.json())
  .then(data => {
    position = data.city
    console.log(position)
  })
}

Je souhaite passer position au PHP. Cette fonction est appelée lors du chargement de la page.

J'ai essayé d'utiliser Express mais cela ne fonctionne pas pour moi.

P粉904405941P粉904405941493 Il y a quelques jours519

répondre à tous(1)je répondrai

  • P粉648469285

    P粉6484692852023-09-19 09:50:20

    Pour transmettre des variables JavaScript à PHP et les insérer dans une base de données MySQL, vous pouvez utiliser AJAX pour envoyer les données à un script PHP sur le serveur.

    Sur le client, utilisez JavaScript pour obtenir les données de localisation (latitude et longitude). Obtenez des données sur la ville à l'aide d'API externes comme https://api.bigdatacloud.net. Après avoir obtenu les données de la ville, effectuez une requête AJAX POST au script PHP sur le serveur. Dans un script PHP, accédez aux données de localisation à partir de la variable superglobale $_POST et insérez-la dans une base de données MySQL à l'aide de PDO ou MySQLi. Voici un exemple de code intéressant :

    function getPosition(position) {
      // 获取纬度和经度
      const latitude = position.coords.latitude;
      const longitude = position.coords.longitude;
      const geoApiUrl = `https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=${latitude}&longitude=${longitude}`;
    
      // 获取城市数据
      fetch(geoApiUrl)
        .then(res => res.json())
        .then(data => {
          const city = data.city;
    
          // 使用AJAX将位置数据发送到PHP
          const xhr = new XMLHttpRequest();
          const phpUrl = 'insert_location.php';
          const params = `latitude=${latitude}&longitude=${longitude}&city=${encodeURIComponent(city)}`;
          xhr.open('POST', phpUrl, true);
          xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
          xhr.send(params);
        });
    }

    PHP (insert_location.php) :

    <?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
      // 从AJAX请求中获取位置数据
      $latitude = $_POST['latitude'];
      $longitude = $_POST['longitude'];
      $city = $_POST['city'];
    
      // 使用PDO将数据插入到MySQL数据库中
      $pdo = new PDO("mysql:host=your_mysql_host;dbname=your_mysql_database", 'your_mysql_username', 'your_mysql_password');
      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
      $stmt = $pdo->prepare("INSERT INTO location_data (latitude, longitude, city) VALUES (?, ?, ?)");
      $stmt->execute([$latitude, $longitude, $city]);
    
      echo '位置数据插入成功。';
    }
    ?>

    répondre
    0
  • Annulerrépondre