【问题标题】:How can we pass a variable from script inside php and set it to new a variable?(Closed)我们如何从 php 中的脚本传递一个变量并将其设置为新的变量?(关闭)
【发布时间】:2021-02-12 05:16:52
【问题描述】:

我们如何从 php 中的脚本传递一个变量并将其设置为新的变量?我想通过坐标计算用户位置和目标位置,但首先我想获取脚本中已经给出的用户坐标。

<?php
function distance($lat1, $lon1, $lat2, $lon2, $unit) {
  if (($lat1 == $lat2) && ($lon1 == $lon2)) {
    return 0;
  }
  else {
    $theta = $lon1 - $lon2;
    $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
    $dist = acos($dist);
    $dist = rad2deg($dist);
    $miles = $dist * 60 * 1.1515;
    $unit = strtoupper($unit);

    if ($unit == "K") {
      return ($miles * 1.609344);
    } else if ($unit == "N") {
      return ($miles * 0.8684);
    } else {
      return $miles;
    }
  }
}

$mResult = distance($lat, $long, 29.46786, -98.53506, "M") . " Miles<br>";
$kmResult = distance($lat, $long, 29.46786, -98.53506, "K") . " Kilometers<br>";
$nmResult = distance($lat, $long, 29.46786, -98.53506, "N") . " Nautical Miles<br>";

echo $kmResult;

?>
<script>

window.onload = function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(bindPosition);
  } else { 
    y.innerHTML = "Geolocation is not supported by this browser.";
  }
}

function bindPosition(position) {
  $.ajax({
    url: "/getlocation",
    type: "GET",
    dataType: "json",
    data: { 
      lat: position.coords.latitude, 
      long: position.coords.longitude
    },
    success: function(response){
          if(data == "success")
        alert(response); 
    },
    error: function(response){
        alert('Error'+response);
        console.log('Error'+response);
    }
  })
}
</script>

路线

Route::get('getlocation', 'HomeController@getAllLocations');

ajax 响应

【问题讨论】:

  • 提交表单或使用ajax。
  • 您好,我更新了上面的代码。需要你的帮助。
  • @FelippeDuarte 我还添加了 ajax 来推送路由中的数据,但我无法收到路由从脚本接收数据的警报消息
  • 路由是否由与您上面提到的相同的 php 代码处理?或者更确切地说,“/getlocation”是如何处理的?
  • 是的,它是到 php 页面的路由

标签: javascript php ajax laravel-5


【解决方案1】:

最好将视图和通过 AJAX 调用的 API 路由分开。分离函数后,您需要使用 $request->input('lat') 访问POST 数据,然后在那里执行操作并返回 JSON 响应。

此外,此代码还有其他问题,例如,$userCoordinates 未定义...

【讨论】:

  • HomeController@getAllLocations 中的代码是什么?根据要求使用以下数据编辑问题...
  • 它可能在我的 ajax 中,因为它没有发出警报
  • 没什么,它只是返回视图('location/all_location');
  • 或者可能是 /getlocation 路由不当处理数据。您可以尝试添加一个错误块,以便在出现错误时通知您。然后我们就可以调试问题了……
  • 这个视图view('location/all_location')和你在问题中提到的代码一样吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多