Rumah  >  Soal Jawab  >  teks badan

"Menukar Pembolehubah JavaScript kepada PHP: Pembolehubah JavasScript ditukar kepada PHP"

Jadi saya tertanya-tanya sama ada terdapat cara untuk menghantar pembolehubah Javascript ke dalam PHP. Saya sedang membuat skrip yang mendapatkan lokasi daripada tapak web dan memasukkan lokasi ini ke dalam MySQL untuk mendapatkan beberapa data analitik.

Ini adalah fungsi Javascript saya:

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

Saya mahu lulus position ke dalam PHP. Fungsi ini dipanggil apabila halaman dimuatkan.

Saya cuba menggunakan ekspres tetapi ia tidak berkesan untuk saya.

P粉904405941P粉904405941396 hari yang lalu459

membalas semua(1)saya akan balas

  • P粉648469285

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

    Untuk menghantar pembolehubah JavaScript ke PHP dan memasukkannya ke dalam pangkalan data MySQL, anda boleh menggunakan AJAX untuk menghantar data ke skrip PHP pada pelayan.

    Pada klien, gunakan JavaScript untuk mendapatkan data lokasi (latitud dan longitud). Dapatkan data bandar menggunakan API luaran seperti https://api.bigdatacloud.net. Selepas mendapatkan data bandar, buat permintaan AJAX POST kepada skrip PHP pada pelayan. Dalam skrip PHP, akses data lokasi daripada pembolehubah superglobal $_POST dan masukkannya ke dalam pangkalan data MySQL menggunakan PDO atau MySQLi. Berikut ialah contoh kod yang kemas:

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

    balas
    0
  • Batalbalas