gpt4 book ai didi

javascript - 将信息从 javascript 传递到使用 php 查询数据库时出错

转载 作者:行者123 更新时间:2023-11-29 21:48:55 27 4
gpt4 key购买 nike

我正在尝试使用 HTML5 地理位置获取用户的位置。有了我得到的纬度和经度,我想使用 php 查询数据库来获取 25 英里内最近的位置。我的 JavaScript 可以获取用户位置并打印纬度和经度,但是当我调用我的 php 文件来获取附近位置时,它似乎不起作用。

编辑2: 看起来像getClosest()没有被调用,因为示例打印输出甚至没有打印到我的 <p id="r">

编辑:我编辑了我的 php 代码,这样当我直接转到 php 链接时它就可以工作了,但它似乎没有从 javascript 中获取信息,因为它没有被打印到第一页。

提前致谢。这是我的 html/javascript:

    <button type="button" onclick="getLocation()">Try It</button>

<p id="demo"></p>
<div id="txtHint"><b>Person info will be listed here...</b></div>
<p id="r">...</p>

<script>
var x = document.getElementById("demo");
var txt = document.getElementById("txtHint");
var r = document.getElementById("r");

function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}

function showPosition(position) {
var lat = position.coords.latitude;
var lon = position.coords.longitude;

getClosest(lat,lon);

x.innerHTML = "Latitude: " + lat +
"<br>Longitude: " + lon;


}

function getClosest(lat,lon) {
r.innerHTML = "DSHFAOSIGIUSDOFDSJF";
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
txt.innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("GET","test.php?lat="+lat+"&lon="+lon,true);
xmlhttp.send();

}
</script>

这是我的 php:

    <?php
error_reporting(E_ALL); ini_set('display_errors', 1);
echo "hello";


echo "aghasldfha";
$q = $_GET['lon'];
$p = $_GET['lat'];

$con = mysqli_connect('localhost','user','pass','db');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}

mysqli_select_db($con,"db");
$sql = "SELECT *, ( 3959 * acos( cos( radians('".$p."') ) * cos( radians( Latitude ) ) * cos( radians( Longitude ) - radians('".$q."') ) + sin( radians('".$p."') ) * sin( radians( Latitude ) ) ) ) AS distance FROM Events HAVING distance < 25 ORDER BY distance LIMIT 0 , 20";
$result = mysqli_query($con,$sql);

echo "<table>
<tr>
<th>Name</th>
<th>Latitude</th>
<th>Longitude</th>
</tr>";
while($row = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td>" . $row['Name'] . "</td>";
echo "<td>" . $row['Latitude'] . "</td>";
echo "<td>" . $row['Longitude'] . "</td>";
echo "</tr>";
}
echo "</table>";

?>

最佳答案

根据评论更新 -

只是为了使代码更具可读性并跟踪从 PHP 发送的所有内容而进行的重构,您可以将所有 echo 语句合并为一个,并在所有操作完成后在最后调用它完成。

试试这个 -

$q = $_GET['lon'];
$p = $_GET['lat'];

$con = mysqli_connect('localhost','user','pass','db');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}

mysqli_select_db($con,"db");
$sql = "SELECT *, ( 3959 * acos( cos( radians('".$p."') ) * cos( radians( Latitude ) ) * cos( radians( Longitude ) - radians('".$q."') ) + sin( radians('".$p."') ) * sin( radians( Latitude ) ) ) ) AS distance FROM Events HAVING distance < 25 ORDER BY distance LIMIT 0 , 20";
$result = mysqli_query($con,$sql);

$table = "<table>
<tr>
<th>Name</th>
<th>Latitude</th>
<th>Longitude</th>
</tr>";

$rows = "";
while($row = mysqli_fetch_array($result)) {
$rows .= "<tr>"."<td>" . $row['Name'] . "</td>"."<td>" . $row['Latitude'] . "</td>"."<td>" . $row['Longitude'] . "</td>"."</tr>";
}
$htmlResult = $table.$rows."</table>";
echo $htmlResult;

关于javascript - 将信息从 javascript 传递到使用 php 查询数据库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33851991/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com