Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于ajax将数据发布到PHP_Php_Ajax_Html_Geolocation - Fatal编程技术网

关于ajax将数据发布到PHP

关于ajax将数据发布到PHP,php,ajax,html,geolocation,Php,Ajax,Html,Geolocation,我是Ajax新手,我知道当我想将数据传递到PHP文件时,我需要使用Ajax,但我不确定Ajax是否可以像我编写的那样使用。如果不行,有人能帮我吗?因为我想使用html5地理位置来获取用户位置。我以前试过geoplugin,但我得到的IP总是服务器IP而不是用户IP,我试着在这里询问geoplugin,但没有工作。我已经尝试了这个html5地理位置来显示我的lon和lat,它是正确的,但是我想把这个变量传递给另一个PHP文件,用从MySQL获得的数据计算最近的距离 在index.php中 <

我是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>

$(文档).ready(函数(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(showLocation);
}否则{
$(“#location').html('此浏览器不支持地理位置');
}
});
功能显示位置(位置){
变量纬度=位置坐标纬度;
var经度=position.coords.longitude;
$.ajax({
类型:'POST',
url:'index1.php',
数据:“纬度=”+纬度+”&经度=”+经度
}
});
}
在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
}
?>

window.location=”http://ukwai1203.000webhostapp.com/fyp/user/shop.php";

将代码更改为:

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版本)工作时。

@JayBlanchard没有错误,只是一个空白页,我将此文件放在一个web主机上server@JayBlanchard忘记添加库,但添加后仍然为空page@JayBlanchardi添加了为什么不应该是空白页?其中唯一的HTML是一个
元素,JS只发出一个Ajax请求:它对响应不做任何操作,也从不向页面写入任何内容。这看起来像是一个发现差异的游戏,而不是一个答案。你改变了什么?为什么要解决这个问题?(看起来你是在建议让jQuery构建帖子正文,而不是手动完成……这是一个很好的最佳实践,但无助于解决问题)。@Quentin请在否决投票和发表无意义的评论之前仔细阅读。发布的代码有不平衡的括号,我认为解决这个问题的方法是使用IDE,而不是指向IDE所在的位置。您还可以在代码中的注释中找到更改点。您可以通过说“您的代码中有一个额外的
}
需要删除”来更清楚地解释这一点。(这仍然不能解决问题,因为HTTP响应仍然被忽略)。请注意,代码中额外的右括号表示代码的前一个状态,其中数据不是手动构造的。但是OP对响应不感兴趣(他可能应该)因为他正在使用坐标获取分支并将其存储在会话中