Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ajax函数中返回较少的值_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 在ajax函数中返回较少的值

Javascript 在ajax函数中返回较少的值,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个问题,我整晚都在试图解决,但我没有找到任何信息,希望你能帮助我 我在ajax中有一个函数,返回php数组中所有用户的纬度和经度,它的操作非常酷,但我需要获取这些数据,并包含在另一个函数中,该函数使用从库中返回的所有坐标计算主坐标的距离 这个功能也工作得很好,我的问题是,我需要取这些值并进行比较,以确定哪一个距离最短,但当我尝试仅检索最低值时,它会返回所有计算出的值 它在我的控制台中返回这些数字 用于计算数据库中2个注册用户的纬度和经度的距离 0.38103420280036954 1.1

我有一个问题,我整晚都在试图解决,但我没有找到任何信息,希望你能帮助我

我在ajax中有一个函数,返回php数组中所有用户的纬度和经度,它的操作非常酷,但我需要获取这些数据,并包含在另一个函数中,该函数使用从库中返回的所有坐标计算主坐标的距离

这个功能也工作得很好,我的问题是,我需要取这些值并进行比较,以确定哪一个距离最短,但当我尝试仅检索最低值时,它会返回所有计算出的值

它在我的控制台中返回这些数字

用于计算数据库中2个注册用户的纬度和经度的距离

0.38103420280036954 1.1341204506826572

但是他们应该只返回0.38103420280036954这个数字是函数的最小数字

我不知道该做什么,我整晚都在寻找和尝试,但都没有成功

这是我的javascript代码

$.ajax({


  type : 'POST',
  data : formula,
  url : 'http://10.0.0.119/melleve/statusorig2.php',
  success : function(data){


    var retorno = JSON.parse(data);




$.each(retorno, function (index, value) {

  var latitude = value.latitude;
  var longitude = value.longitude;







var lat1 = -22.8650697;
var lat2 = latitude;

var long1 = -43.287510499999996;
var long2 = longitude;

var radlat1 = Math.PI * lat1/180;
var radlat2 = Math.PI * lat2/180;
var theta = long1 - long2;
var radtheta = Math.PI * theta/180;
var dist = Math.sin(radlat1)*Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
dist = Math.acos(dist);

dist = dist * 180/Math.PI;
dist = dist * 60 * 1.1515;


var finaldist = dist * 1.609344;


var numeros = [finaldist];
var ok = Math.min.apply(Math, numeros);

console.log(ok);







});






  },
  error: function(jqXHR, textStatus, errorThrown){
    //debugger;
  }
  //,complete: function(jqXHR, textStatus){
   // debugger;
  //}

})
这是我的php

$carmodel = $_POST['carmodel'];



 $sql = "SELECT * FROM cadast_moto WHERE carmodel = '$carmodel'"; 

$result = $conn->query($sql);

$encode = array();

while ($res = $result->fetch_array()) {

$arr = array('idmoto' => $res['idmoto'], 'nomemoto' => $res['nomemoto'], 'latitude' => $res['latitude'], 'longitude' => $res['longitude']);


$encode[] = $arr;

//echo (json_encode($arr));

}

您正在打印
$中的最小值。每个
,意味着它将被调用多次。另外,数组只包含一个元素
numeros=[finaldist]
。您可能需要以下内容:

var distances = $.map(arrayOfValues, function(value) { 
   /* do calcualation for one longitude latitude pair */
   return finaldist;
});

var smallestNumber = Math.min.apply(Math, distances);

如果您不熟悉jQuery.map,可以阅读它

正如我所需要的,他现在就像一只手套一样工作,谢谢,甚至他的答案是10000000。问题是您在
每个
循环中使用
控制台.log()
。这就是它打印所有结果的原因。您必须存储所有结果并执行
Math.min()