php - 如何传递ajax返回值php变量

标签 php jquery mysql ajax

我知道这个问题被问过很多次,但没有一个有正确的解决方案。我正在使用 ajax 从 PHP 页面获取响应。得到响应后,我想使用 PHP 变量中的值。下面的代码正在获取结果,但我对它的用法感到困惑。

下面是我的index.php

function getLocation() {
     if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(geoSuccess, geoError);
        } else {
            alert("Geolocation is not supported by this browser.");
        }
    }

    function geoSuccess(position) {
        var glat = position.coords.latitude;
        var glng = position.coords.longitude;
        //alert("lat:" + glat + " lng:" + glng);
        geocoding(glat,glng);
      }

    function geoError() {
        alert("Geocoder failed.");
    }
    function geocoding(glat,glng){
        $.ajax({
        type:'POST',
        url:'geolocation.php',
        data:'latitude='+glat+'&longitude='+glng,
        success:function(result){
            if(result){
               $("#locationg").val(result);
               $("#htmllocation").html(result);
           }
        }
    });
   }

地理定位.php

<?php
session_start();
if(!empty($_POST['latitude']) && !empty($_POST['longitude'])){
    //Send request and receive json data by latitude and longitude
    $url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng='.trim($_POST['latitude']).','.trim($_POST['longitude']).'&sensor=false';
    $json = @file_get_contents($url);
    $data = json_decode($json);
    $status = $data->status;
    if($status=="OK"){
        //Get address from json data
        $location = $data->results[0]->formatted_address;
        //$location = $data->results[0]->address_components;

        for($j=0;$j<count($data->results[0]->address_components);$j++){
               $cn=array($data->results[0]->address_components[$j]->types[0]);
           if(in_array("locality", $cn))
           {
            $city= $data->results[0]->address_components[$j]->long_name;
           }
            }

     }else{
        echo 'No Location';
    }

    echo $city;
}
?>

索引.php

<?php
    $city='<span id="htmllocation"></span>';
?>

当我 echo $city 时,我正在获取城市名称,但在检查元素时它显示为

<span id="htmllocation">Visakhapatnam</span>

问题是我不能在 MYSQL 中使用它,因为它是 html 格式,我只想获取城市名称。

我希望我的问题很清楚,如果不清楚请发表评论。

最佳答案

  • 用户找到example.com/index.php,它显示一个网页。
  • 您从 JS 获取用户的位置。
  • 您将其发送回服务器,并获取该位置的地址。
  • 然后你想从index.php访问地址

这样对吗?如果是这样,你不能这样做。事情不是那样的。 Web 服务器使用请求-响应模型。当您的 php 完成时,服务器会终止进程,ei。 $city 和其他一切都被破坏了。之后,您将获得用户的位置。如果你想再次从服务器得到一些东西,你必须发送一个新的请求,因为 index.php 的进程不再可用。这是不可能在你从客户端获取城市名称之前获取它的,并且你无法在他第一次请求 index.php 的那一刻从客户端获取位置,你也无法访问已经存在的-非运行进程。

您需要做的就是在 geolocation.php 中运行您的 SQL 查询。当你从谷歌获得结果时,然后从你的数据库中获取数据。 $city 不包含任何 HTML 代码,仅包含普通的城市名称。然后将与该城市相关的一些数据返回给用户,并显示出来。

关于php - 如何传递ajax返回值php变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47483756/

相关文章:

php - MySQL UNION SELECT 3 表错误

javascript - Ajax 不会从 php 文件中检索文件

javascript - SetTimeout 递归函数超出最大调用堆栈大小 (Javascript)

MySQL,查找具有另一个匹配参数的双行

mysql - 禁用 ONLY_FULL_GROUP_BY mysql 8 Ubuntu 20.04 LTS

javascript - 使用 PHPExcel 将输入值存储到 Excel

php - jQuery $(this).serialize() 不发送未更改的输入

javascript - 隐藏从 API 调用的某个元素

javascript - 获得Fancybox与Plone的News Item image合作

java - 没有找到合适的驱动程序调用 getConnection