Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Передача значения из функции (https://javascript.ru/forum/jquery/57625-peredacha-znacheniya-iz-funkcii.html)

asvlogan 12.08.2015 12:50

Передача значения из функции
 
var answer;
$.ajax({
type:"POST",
url:"data/answer.txt",
success: function(data){
answer=data.split('\n');
//alert(answer[1]);
}
});
alert(answer[1]);

Alert внутри функции работает, а снаружи - Uncaught TypeError: Cannot read property '1' of undefined

Как сделать чтоб и снаружи работало?

krasovsky 12.08.2015 13:58

Никак. Асинхронный запрос на то и асинхронный.
Вот тебе прямой идиотский вариант решения твоей "проблемы":
var result = null;
$.ajax({ 
 type:"POST",
 url:"data/answer.txt",
 success: function(data){
  result =data.split('\n');
 }
});
var interval = setInterval(function(){
 if(result) {
   clearInterval(interval);
   alert(result);
 }
},100)

asvlogan 12.08.2015 14:31

Значит придется создать div и в него выводить
success: function(data){
var array= data.split('\n');
for(var i=0;i<array.length;i++)
$('div').append("<p>"+array[i]+"</p>");
}
а затем через css подгонять этот div под вид модульного окна.

Опять велосипед самому писать.

asvlogan 13.08.2015 09:15

Решил задачу:
setTimeout(function(){
var region = $('#dist :checked').text();
var massiv = $('#massiv :checked').text();
var street= $('#autocomplete').val();
var house= $('input[name=house]').val();
if($('input[name=cond]').prop('checked')){
var res1= answer(0)
}
if($('input[name=furUn]').prop('checked')){
var res1= answer(1)
}
if($('input[name=animal]').prop('checked')){
var res2= answer(2)
}

function answer(num){
$.ajax({
type:"POST",
url:"data/answer.txt",
success: function(data){
answer=data.split('\n');
if(isNaN(street)) street='';
alert(
region+
massiv+
street+
house+
answer[num]
);
}
});
}
},4000);
});


Часовой пояс GMT +3, время: 23:25.