AJAX 如何把 JS 的值传递给 PHP ?

2017-09-15 09:35:50 +08:00
 xiaozy
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
//alert('您的位置:'+r.point.lng+','+r.point.lat);
}
else {
alert('failed'+this.getStatus());
}
},{enableHighAccuracy: true});

因为不会 AJAX,特来请教,非常感谢!上面的代码是获取当前位置经纬度,如何把里面的 r.qoint.lngr.point.lat 传给 PHP 呢?

3211 次点击
所在节点    问与答
13 条回复
shcolo
2017-09-15 09:58:07 +08:00
$.post(url, {lng:r.point.lng,lat:r.point.lat}, function(e){
console.log(e)
})
xiaozy
2017-09-15 10:05:59 +08:00
@shcolo 感谢您的回复,请问$.post()中的 url,指的是哪个 URL 以及这个 URL 里应该是什么内容呢,因为不会 AJAX,见笑了。。。T-T
msg7086
2017-09-15 10:14:59 +08:00
url 不就是你用来接收 ajax 请求的 php 脚本么。
xiaozy
2017-09-15 10:35:57 +08:00
@msg7086 我把 URL 改成了 list.php?id=$id,并在 list.php 里把经纬度获取的方法改成$lng = $_POST['lng'],好像可以接收到,但页面一直刷新是怎么回事呢?代码如下:

```
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
var url = 'list.php?id=$id';
$.post(url, {lng:r.point.lng,lat:r.point.lat}, function(e){
console.log(e);
$('body').html(e);
});
}
else {
alert('failed'+this.getStatus());
}
},{enableHighAccuracy: true});
```
我添加了这句`$('body').html(e);`因为我在 console 里看到输出的是 HTML 格式。然后就一直刷新。请问是我哪里出了问题呢?该如何解决,麻烦您了。谢谢!~
learnshare
2017-09-15 10:38:33 +08:00
不如先翻翻入门的书,再开始写?
xiaozy
2017-09-15 10:43:51 +08:00
@learnshare 因为目前这是最后一步收尾工作了,测试中出现的问题定位不准确问题,想到最好的方式,只能用这种方式来做,因为完全不会 AJAX,所以就困住了,这之后肯定苦研这次项目中所遇到自己不会的问题和学习更多知识。。。T-T。
90safe
2017-09-15 15:08:39 +08:00
百度 ajax 例子,将两个值放在 data 里面传过去。
Outhwaite
2017-09-15 15:18:20 +08:00
如果你的 PHP 函数中没有什么返回值,就不需要 console.log(e)和 $('body').html(e); 了
szdubinbin
2017-09-15 20:19:21 +08:00
假设你用的是 jq $ajax,大概会是这样的
var youdata = {
x: r.point.lng,
y:r.point.lat
}
$.ajax({
type: 'POST',
url: 'xxxx.php',
data: youdata,
dataType:'json',
success:function(){
alert('success')
}
})
xiaozy
2017-09-16 08:16:58 +08:00
@szdubinbin 对是这个样子的,不知道为什么 AJAX 一直无限刷新当前页整页 HTML。
xiaozy
2017-09-16 08:19:02 +08:00
@Outhwaite 请问,如果不需要这两个,应该怎样执行 AJAX 呢?因为,我在后台获取$_POST['lat']和 lng 是用来在 MYSQL 与商家设置的经纬度计算的出距离排序使用的。计算距离后,用 PHP 循环列表,显示距离。
shcolo
2017-09-18 09:05:38 +08:00
@xiaozy url 就是你 PHP 接收经纬度的地址
xiaozy
2017-09-18 17:28:46 +08:00
@shcolo 是啊,我现在已经写好了,可是 AJAX 返回整个 HTML 页面,造成一直加载刷新。完全没有头绪我到现在都还没解决这一问题。T-T。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/390850

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX