2016-11-28 92 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