Значение получает null после вызова ajax и сохраняется в глобальной переменной
я объявляю одну глобальную переменную. их одна функция, в которой содержится вызов ajax и после успеха ответ хранится в значении tmp, но вне области действия значение tmp не сохраняется в предупреждении, почему я не вижу никакого другого решения на нем.
Что я уже пробовал:
Var tmp=null; function Fn() { var PlantName = function () { var dataPlantName = $.Deferred(); $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", url: "WebService1.asmx/GetPlantMapName", dataType: "json" }).done(function (response) { //console.log(response.d); dataPlantName.resolve(response.d.data); tmp = response.d.data; }); return dataPlantName.promise(); } (); alert(tmp); };
F-ES Sitecore
Он сохраняется, проблема в том, что ваше предупреждение запускается до того, как переменная tmp установлена. вызовы ajax происходят в фоновом режиме, пока ваш код продолжает работать, поэтому ваш код не останавливается на $.ajax, ожидая события done, вместо этого он продолжает работать, так что ваше предупреждение пусто.
Если вы хотите, чтобы что-то произошло, когда переменная tmp установлена, то напишите этот код в событии done.
Member 12893295
Спасибо, что он работает на меня.