2016-08-30 2 views
-2

im получить значение из jQuery ajax, но не удалось сохранить глобальную переменную, значение которой я хочу использовать в другой функции. Я хочу, чтобы функция assignValue назначала функцию инициализации.не удалось сохранить одно значение функции в переменной

Javascript код

var dustValue; 
$.ajax({ 
    type: "GET", 
    url: "http://my url", 
    dataType: "json", 
    success: function (data) { 
     dustValue = data.sensorsdata.PHValue; 
    } 
}); 
var myCenter = new google.maps.LatLng(22.8046, 86.2029); 
function initialize() { 
    var mapProp = { 
     center: myCenter, 
     zoom: 17, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

    var map = new google.maps.Map(document.getElementById("googleMap"), mapProp); 
    var value = dustValue;//78.55 
    var dustbinstatus = ''; 

    if (value < 50) { 
     dustbinstatus = 'img/dustbinempty.png'; 
    } else if (value > 50 && value < 90) { 
     dustbinstatus = 'img/dustbinfull.png'; 
    } else if (value > 90) { 
     dustbinstatus = '3.jpg'; 
    } 

    var marker = new google.maps.Marker({ 
     position: myCenter, 
     icon: v_icon 
    }); 
     marker.setMap(map); 
} 
google.maps.event.addDomListener(window, 'load', initialize); 

тело

<div id="googleMap" style="width:1580px;height:780px;"></div> 
+0

Вы можете сохранить это значение в скрытый элемент и доступ позже из того же элемента. – Kashyap

ответ

0

Аякса вызов асинхронный, так что вы можете сделать, как показано ниже. Я имею в виду переместить google.maps.event линию внутри функции успеха

var dustValue; 
$.ajax({ 
    type: "GET", 
    url: "http://my url", 
    dataType: "json", 
    success: function (data) { 
     dustValue = data.sensorsdata.PHValue; 
     google.maps.event.addDomListener(window, 'load', initialize); 
    } 
}); 
var myCenter = new google.maps.LatLng(22.8046, 86.2029); 
function initialize() { 
    var mapProp = { 
     center: myCenter, 
     zoom: 17, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

    var map = new google.maps.Map(document.getElementById("googleMap"), mapProp); 
    var value = dustValue;//78.55 
    var dustbinstatus = ''; 

    if (value < 50) { 
     dustbinstatus = 'img/dustbinempty.png'; 
    } else if (value > 50 && value < 90) { 
     dustbinstatus = 'img/dustbinfull.png'; 
    } else if (value > 90) { 
     dustbinstatus = '3.jpg'; 
    } 

    var marker = new google.maps.Marker({ 
     position: myCenter, 
     icon: v_icon 
    }); 
     marker.setMap(map); 
} 

или вы можете использовать, когда функция

$.when(ajaxfunction()).done(your logic); 
+0

Еще проще: просто вызовите 'initialize()' без 'google.maps.event.addDomListener();' –

Смежные вопросы