如何传递ajax返回值php变量

时间:2017-11-25 07:49:55

标签: 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);
           }
        }
    });
   }

geolocation.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;
}
?>

的index.php

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

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

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

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

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

4 个答案:

答案 0 :(得分:0)

我没有足够的评论来评论然后我在这里问。 你可以发一个geocoding()调用转储吗?

编辑:尝试json编码你的php响应并使用eval(),这很快又脏吗?

答案 1 :(得分:0)

在内置函数strip_tags中使用PHP从您的语句中删除HTML标记,以便仅在下面的变量中获取City:

$city = strip_tags('<span id="htmllocation">Visakhapatnam</span>');
// Output will be Visakhapatnam only

答案 2 :(得分:0)

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

这是对的吗?如果是这样,你就无法做到。事情不像那样。 Web服务器使用请求 - 响应模式。当你的php完成时,服务器终止进程,ei。 $city,其他一切都被摧毁了。之后,您将获得用户的位置。如果您想再次从服务器获取某些内容,则必须发送新请求,因为index.php的进程不再可用。在您从客户端获取该城市之前,无法获取该城市的名称,并且您在首次请求index.php时无法从该客户端获取该城市的位置,您也无法访问已经没有运行的过程。

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

答案 3 :(得分:-1)

最初使用

在PHP中启动会话
sessionstart()

方法。然后在上面的代码之后添加此代码。 首先使用Jquery设置会话,如下所示:

$.session.set("yoursessioname", "storevalue");

然后尝试在PHP中获取此会话变量,如下所示:

$city = $_SESSION['yoursessioname'];

我还没有尝试过。我希望它有所帮助。 :)