所以我想知道是否有办法将Javascript变量传递到PHP中。我正在制作一个从网站获取位置并将此位置插入到MySQL中以获取一些分析数据的脚本。
这是我的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) }) }
我想将position
传递到PHP中。这个函数在页面加载时被调用。
我尝试使用express,但对我来说不起作用。
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 '位置数据插入成功。'; } ?>