2016-11-28 55 views
-1

我打电话从阿贾克斯成功职能工作,并试图从函数返回值返回未在JavaScript

阿贾克斯成功是

success: function(data) 
    { 
    var distance_arr;  
    data = JSON.parse(data); 
    for (var i = 0; i < data.length; i++) 
    { 
     if(data[i].port_name != destination) 
     { 
      distance_arr = get_port_distance(data[i].port_name,source,type); 
      alert(distance_arr); 
     } 

    } 
    } 

get_port_distance功能我返回值

return distance; 

通过计算get_port_distance函数中的距离。当get_port_distance我警戒距离那么它是正确的,但是当我回到它它在阿贾克斯的成功提醒功能空白

function get_port_distance(source,destination,type) 
{ 
    var directionsDisplay; 
    var directionsService = new google.maps.DirectionsService(); 


    var request = 
    { 
     origin: source, 
     destination: destination, 
     travelMode: google.maps.TravelMode.DRIVING 
    }; 

     var service = new google.maps.DistanceMatrixService(); 
     service.getDistanceMatrix({ 
     origins: [source], 
     destinations: [destination], 
     travelMode: google.maps.TravelMode.DRIVING, 
     unitSystem: google.maps.UnitSystem.METRIC, 
     avoidHighways: false, 
     avoidTolls: false 
    }, function (response, status) { 
    if (status == google.maps.DistanceMatrixStatus.OK && response.rows[0].elements[0].status != "ZERO_RESULTS") { 
     var port_distance = response.rows[0].elements[0].distance.text; 
     port_distance = port_distance.replace(/\,/g,'').replace(' km',''); // To REMOVE comma(,) 
     return port_distance; 

     } 
    }); 
}  
+0

可以请你分享get_port_distance的代码。 – Sumit

+0

您的循环条件可能会给您空白值。 ,当你从函数 – Afsar

+0

得到距离值时,你可能想要打破循环如果你认为问题出现在'get_port_distance'函数中,你应该发布它 – RizkiDPrast

回答

1

return port_distance;

放在里面:

function (response, status) {}

这意味着,你是不是从返回任何东西:

function get_port_distance(source,destination,type){}

看到这个Stackflow answer解决由异步函数返回的问题的帮助。

+0

是的。但我该如何回报它。现在我将它返回到函数外部(响应,状态){}它给出错误port_distance未定义 – hrishi

+0

已更新的答案 - 请参阅链接 – rabbitco

+0

*是的。但是我怎样才能返回它*你不能返回未来或异步值 - 它还不存在。 – 2016-11-28 07:21:47