V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xiaozy
V2EX  ›  问与答

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

  •  
  •   xiaozy · 2017-09-15 09:35:50 +08:00 · 3054 次点击
    这是一个创建于 2409 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 呢?

    13 条回复    2017-09-18 17:28:46 +08:00
    shcolo
        1
    shcolo  
       2017-09-15 09:58:07 +08:00   ❤️ 1
    $.post(url, {lng:r.point.lng,lat:r.point.lat}, function(e){
    console.log(e)
    })
    xiaozy
        2
    xiaozy  
    OP
       2017-09-15 10:05:59 +08:00
    @shcolo 感谢您的回复,请问$.post()中的 url,指的是哪个 URL 以及这个 URL 里应该是什么内容呢,因为不会 AJAX,见笑了。。。T-T
    msg7086
        3
    msg7086  
       2017-09-15 10:14:59 +08:00   ❤️ 1
    url 不就是你用来接收 ajax 请求的 php 脚本么。
    xiaozy
        4
    xiaozy  
    OP
       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
        5
    learnshare  
       2017-09-15 10:38:33 +08:00   ❤️ 1
    不如先翻翻入门的书,再开始写?
    xiaozy
        6
    xiaozy  
    OP
       2017-09-15 10:43:51 +08:00
    @learnshare 因为目前这是最后一步收尾工作了,测试中出现的问题定位不准确问题,想到最好的方式,只能用这种方式来做,因为完全不会 AJAX,所以就困住了,这之后肯定苦研这次项目中所遇到自己不会的问题和学习更多知识。。。T-T。
    90safe
        7
    90safe  
       2017-09-15 15:08:39 +08:00
    百度 ajax 例子,将两个值放在 data 里面传过去。
    Outhwaite
        8
    Outhwaite  
       2017-09-15 15:18:20 +08:00
    如果你的 PHP 函数中没有什么返回值,就不需要 console.log(e)和 $('body').html(e); 了
    szdubinbin
        9
    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
        10
    xiaozy  
    OP
       2017-09-16 08:16:58 +08:00
    @szdubinbin 对是这个样子的,不知道为什么 AJAX 一直无限刷新当前页整页 HTML。
    xiaozy
        11
    xiaozy  
    OP
       2017-09-16 08:19:02 +08:00
    @Outhwaite 请问,如果不需要这两个,应该怎样执行 AJAX 呢?因为,我在后台获取$_POST['lat']和 lng 是用来在 MYSQL 与商家设置的经纬度计算的出距离排序使用的。计算距离后,用 PHP 循环列表,显示距离。
    shcolo
        12
    shcolo  
       2017-09-18 09:05:38 +08:00
    @xiaozy url 就是你 PHP 接收经纬度的地址
    xiaozy
        13
    xiaozy  
    OP
       2017-09-18 17:28:46 +08:00
    @shcolo 是啊,我现在已经写好了,可是 AJAX 返回整个 HTML 页面,造成一直加载刷新。完全没有头绪我到现在都还没解决这一问题。T-T。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2613 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 10:55 · PVG 18:55 · LAX 03:55 · JFK 06:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.