关于ajax将数据发布到PHP
我是Ajax新手,我知道当我想将数据传递到PHP文件时,我需要使用Ajax,但我不确定Ajax是否可以像我编写的那样使用。如果不行,有人能帮我吗?因为我想使用html5地理位置来获取用户位置。我以前试过geoplugin,但我得到的IP总是服务器IP而不是用户IP,我试着在这里询问geoplugin,但没有工作。我已经尝试了这个html5地理位置来显示我的lon和lat,它是正确的,但是我想把这个变量传递给另一个PHP文件,用从MySQL获得的数据计算最近的距离 在index.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中 <
<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对响应不感兴趣(他可能应该)因为他正在使用坐标获取分支并将其存储在会话中