suchen

Heim  >  Fragen und Antworten  >  Hauptteil

„JavaScript-Variablen in PHP konvertieren: JavaScript-Variablen in PHP konvertiert“

Ich frage mich also, ob es eine Möglichkeit gibt, Javascript-Variablen an PHP zu übergeben. Ich erstelle ein Skript, das einen Standort von einer Website abruft und diesen Standort in MySQL einfügt, um einige Analysedaten zu erhalten.

Das ist meine Javascript-Funktion:

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)
  })
}

Ich möchte position in PHP übergeben. Diese Funktion wird aufgerufen, wenn die Seite geladen wird.

Ich habe versucht, Express zu verwenden, aber es funktioniert bei mir nicht.

P粉904405941P粉904405941477 Tage vor512

Antworte allen(1)Ich werde antworten

  • P粉648469285

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

    要将JavaScript变量传递到PHP并将它们插入到MySQL数据库中,您可以使用AJAX将数据发送到服务器上的PHP脚本。

    在客户端上,使用JavaScript获取位置数据(纬度和经度)。 使用外部API(如https://api.bigdatacloud.net)获取城市数据。 获取城市数据后,向服务器上的PHP脚本发出AJAX POST请求。 在PHP脚本中,从$_POST超全局变量中访问位置数据,并使用PDO或MySQLi将其插入到MySQL数据库中。 下面是一个简洁的代码示例:

    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 '位置数据插入成功。';
    }
    ?>

    Antwort
    0
  • StornierenAntwort