Rumah > Soal Jawab > teks badan
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粉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 '位置数据插入成功。'; } ?>