【问题标题】:About ajax post data to PHP关于 ajax 将数据发布到 PHP
【发布时间】:2018-01-23 14:41:25
【问题描述】:

我是 Ajax 的新手,我知道当我想将数据传递给 PHP 文件时我需要使用 Ajax,但我不确定 Ajax 是否可以像我编写的代码那样使用。如果不能,任何人都可以帮助我吗?因为我想使用 html5 地理位置来获取用户位置。我之前尝试过geoplugin,但我得到的IP总是服务器IP而不是用户IP,我尝试在这里询问geoplugin但没有用。我已经尝试过这个 html5 地理位置来显示我的 lon 和 lat,它是正确的,但我想将变量传递给另一个 PHP 文件以计算从 MySQL 获取的数据的最近距离。

在 index.php 中

<script>
$(document).ready(function(){
if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showLocation);
} else { 
    $('#location').html('Geolocation is not supported by this browser.');
}
});

function showLocation(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
$.ajax({
    type:'POST',
    url:'index1.php',
    data:'latitude='+latitude+'&longitude='+longitude
    }
});
}
</script>

在 index1.php 中

<?php
session_start();
$link=mysqli_connect("localhost","id2135226_ukwai1203","ukwai1203");
mysqli_select_db($link,"id2135226_demo");
$lat=$_POST['latitude'];
$lon=$_POST['longitude'];
$sql = "select branch_id,(6371 * 2 * ASIN(SQRT( POWER(SIN(($lat - 
branch_lat)*pi()/180/2),2)+COS($lat*pi()/180 
)*COS(branch_lat*pi()/180)*POWER(SIN(($lon-branch_lon)*pi()/180/2),2)))) 
as 
distance From Branch ORDER BY distance ASC LIMIT 1";
$res=mysqli_query($link,$sql);
while($row=mysqli_fetch_array($res)){
$_SESSION['location']=$row['branch_id'];
?>
<script>

window.location="http://ukwai1203.000webhostapp.com/fyp/user/shop.php";
</script>
<?php
}
?>

【问题讨论】:

标签: php ajax html geolocation


【解决方案1】:

将您的代码更改为:

function showLocation(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
$.ajax({
   method:"POST",
    url:"index1.php",
    data:{
   latitude : latitude,
   longitude : longitude
    }
  });//ajax end

}//function end

考虑使用 Eclipse 之类的 IDE 来帮助您发现缺少的括号等。 并且在通过修改旧代码检查库版本(如 jquery 版本)工作时。

【讨论】:

  • 这读起来像是一个找不同的游戏,而不是一个答案。你改变了什么?为什么要解决问题? (看起来您建议让 jQuery 构建 POST 正文而不是手动执行……这是一个很好的最佳实践,但对解决问题没有帮助)。
  • @Quentin 在投反对票和发布废话之前请仔细阅读。贴出的代码有不平衡的括号,我认为解决这个问题的方法是使用 IDE 而不是指向它所在的位置。您还可以在代码中找到 cmets 的更改点。
  • 您可以通过说“您的代码中有一个额外的} 需要删除”来更清楚地解释这一点。 (这仍然不能解决问题,因为 HTTP 响应仍然被忽略)。
  • 请注意,代码中额外的右括号表示代码之前未手动构造数据的状态。
  • 但是 OP 对响应不感兴趣(他可能应该),因为他正在使用坐标获取分支并将其存储在会话中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 2016-11-02
  • 2011-09-30
  • 2017-07-12
相关资源
最近更新 更多