Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Очередной случай мистики в JS / 6 сообщений из 6, страница 1 из 1
03.06.2014, 11:17
    #38659723
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очередной случай мистики в JS
Имеется вызов:

Код: javascript
1.
madad = getParametrFromDB(first_year, first_month, second_year, second_month);

и сама функция:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
function getParametrFromDB(first_year, first_month, second_year, second_month)
	{
	    var value;
	    $.ajax({ 
            url:"php/operations.php", 
		    type: 'post',
            data:{ year_one: first_year, month_one: first_month, year_two: second_year, month_two: second_month },
            success:function(result){
                alert("result = " + result);			
			    value = result;
            } 
        });
		alert("value = " + value);		
		return value;
	}


Если всё оставить как есть то код работает. если убрать алерты, то возващаемый результат полкчается неопределённым.

что за чертавщина? и как испавить??
...
Рейтинг: 0 / 0
03.06.2014, 11:28
    #38659745
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очередной случай мистики в JS
пока висит alert value, запрос к серверу успевает отработаться. после запроса в очередь становится alert result, а после закрытия алертов происходит возврат value.

если убрать алерты, выход из процедуры происходит до того, как отработается запрос.
исправить это можно, оформив манипуляции, которые нужно произвести с value, в процедуру, и передав ее в getParametrFromDB:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function doSomething(value){
    alert(value)
}

function getParametrFromDB(first_year, first_month, second_year, second_month, callback){
	    var value;
	    $.ajax({ 
            url:"php/operations.php", 
		    type: 'post',
            data:{ year_one: first_year, month_one: first_month, year_two: second_year, month_two: second_month },
            success:callback
        });
}
...
Рейтинг: 0 / 0
03.06.2014, 11:30
    #38659748
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очередной случай мистики в JS
соответственно вызов:

Код: javascript
1.
getParametrFromDB(2015,1,2015,2,doSomething);
...
Рейтинг: 0 / 0
03.06.2014, 11:38
    #38659764
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очередной случай мистики в JS
А мистика то где?
...
Рейтинг: 0 / 0
03.06.2014, 11:50
    #38659800
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очередной случай мистики в JS
ИзопропилА мистика то где?как и любая мистика — в восприятии субъекта
...
Рейтинг: 0 / 0
04.06.2014, 08:06
    #38660919
sxq
sxq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очередной случай мистики в JS
у вас возврат из функции осуществляется прежде чем завершится запрос на сервер.
Вам следует более тщательнее изучить понятие асинхронность работы.
В вашем случае, как вариант можно отключить асинхронность, тогда выход из функции будет производиться после завершения запроса на сервер.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Очередной случай мистики в JS / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]