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