 
			
				11.01.2015, 06:09
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.12.2014 
					
					
					
						Сообщений: 86
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Как передать объект в функцию.
			 
			
		
		
		
		Здравствуйте. 
function f( type, url, data, arr)    {
       
        $.ajax({
                type: type,
                url: url,
                data: data,
                success: function (jsonVars) {
                    varForID = arr;   // при вызове должно быть: varForID = jsonVars.doctor;
                    alert(varForID);
                },
                complete: function()    {
                    $('#'+id).trigger('dropDownLoaded');
                }
        });
        return  varForID;
    }
вызываю функцию:
 
autocomleteRemovedArrWatcher('doctor', 'GET', '/getSecondParams', sendFormAb($('#serviceType_1').val()), arr);
не знаю что нужно написать в "arr", чтобы обратиться внутри объекта, который получаю от сервера, к элементу doctor.
 
при подстановке arr в 
varForID = arr;
 
должно получиться 
varForID = jsonVars.doctor;  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.01.2015, 09:31
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Че сказал? Сам хоть понял? 
Одно можно сказать - у тебя ошибка логическая:
 
	
 
	| 
		
			Сообщение от Dtri
			
		
	 | 
 
	| 
		return  varForID;
	 | 
 
	
 
 Ты пытаешься из функции вернуть значение, которое еще не успело придти с сервера (запрос к серверу идет очень долго, и поток исполнения кода не блокирует (асинхронно выполняется то есть), поэтому функция success выполняется позже функции f() )  
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.01.2015, 11:18
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 junior 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 29.11.2011 
					
					
					
						Сообщений: 3,924
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от danik.js
			
		
	 | 
 
	| 
		Одно можно сказать - у тебя ошибка логическая
	 | 
 
	
 
 Наверно, раз в день этот вопрос задают. Надоели уже    
ЧаВО - часто задаваемые вопросы (faq) 
		
	
		
		
		
		
		
			
				__________________ 
				Чебурашка стал символом олимпийских игр. А чего достиг ты? 
Тишина - самый громкий звук
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.01.2015, 12:52
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.03.2012 
					
					
					
						Сообщений: 3,744
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от nerv_
			
		
	 | 
 
	| 
		Наверно, раз в день этот вопрос задают. Надоели уже
	 | 
 
	
 
 каждый в своей жизни должен создать тему с этим вопросом    
	
 
	| 
		
			Сообщение от nerv_
			
		
	 | 
 
	| 
		ЧаВО - часто задаваемые вопросы (faq)
	 | 
 
	
 
 если  Gozar добавит этот вопрос в первый пост, то есть небольшая вероятность, что количество вопросов уменьшится, 
а так там уже 8 страниц накапало (у меня по 20 постов на страницу), я бы не стал читать, вообще непонятна логика создания факов с х-евой тучей страниц без оглавления, по мне так любому должно быть влом хотя бы перелистать эти все страницы, даже не читая  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось bes, 11.01.2015 в 12:55.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.01.2015, 17:09
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.12.2014 
					
					
					
						Сообщений: 86
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		вы не на то обратили внимание в посте. Но да ладно. Зато вы указали на ошибку в коде ту которую проглядел. 
Вопрос был изначально в другом. Но уже нашёл решение.
 
jsonVars.doctor
  можно заменить на  
jsonVars['doctor']
 
и тогда 'doctor' можно передавать в функцию как строку.
 
function (Str) {
 jsionVars[Str]
}
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.01.2015, 19:47
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.12.2014 
					
					
					
						Сообщений: 86
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
function autocomleteRemovedArrWatcher(id, type, url, data, arr)  {
    var varForID;
    var arrObj;
    function f( type, url, data, arr)    {
        $.ajax({
                type: type,
                url: url,
                data: sendFormAb($(data).val()),
                async: false,
                success: function (jsonVars) {
                    //jsonVars[arr] instanceof Object?alert(sendFormAb(jsonVars[arr])):{}
                    if  (jQuery.type(jsonVars[arr]) !== 'object') {
                      varForID = jsonVars[arr]
                    } else  {
                        //alert([jsonVars[arr]].join('\n'))
                        var keys = new Array();
                        for (var key in jsonVars[arr]) {
                            keys.push(key);
                        }
                        varForID = keys;
                        arrObj = jsonVars[arr];
                    }
                },
                complete: function()    {
                    $('#'+id).trigger('dropDownLoaded');
                }
        });
        return  [varForID, arrObj]; // обратите внимание сюда
    }
    function f0()   {
        $('#'+id).focus();
    }
    function f1(id){
        if($('.autoCompleteInput_'+id).length==0) {
            $('<div class="autoCompleteInput autoCompleteInput_'+id+'"  style="width:'+(($('#'+id).width())*1+20*1)*1+'px;">').insertBefore('#'+id);
            $('#'+id).appendTo('.autoCompleteInput_'+id);
            $('#'+id).after('<div class="dropDownList dropDownList_'+id+'" style="width:'+$('#'+id).css('width')+';"></div>');
        }else    {
            $('.dropDownList_'+id).show();
        }
    }
    function f2(arr, id)   {
        $('.dropDown_'+id).remove();
        for (var i in arr)  {
            if  ((arr[i].indexOf($('#'+id).val())!==-1)&&(arr[i]!==''))  {
                $('.dropDownList_'+id).append('<div class="dropDown dropDown_'+id+'">'+arr[i]+'</div>');
            }
        }
    }
    function f3(id)    {
        $('.dropDown_'+id).on('mousedown', function(){
           $('#'+id).val( $(this).html()).trigger('changed');
           $('#'+id).trigger('inputDropDownClick');
        });
        $('#'+id).on('blur', function(){
            $('.dropDownList_'+id).hide();
        });
    }
    function f4(id)   {
        $('#'+id).on('inputDropDownClick', function(){
            $('.dropDownList_'+id).hide();
        });
    }
    function f5()   {
        $('#'+id).trigger('changed');
    }
    $('#'+id).on({
        click: function()   {
            f(type, url, data, arr);
        },
        dropDownLoaded: function()  {
            f1(id);
            f2(varForID, id);
            f3(id);
            f4(id);
            f0();
        },
        keyup: function()   {
            f1(id);
            f2(varForID, id);
            f3(id);
            f4(id);
            f5();
        }
    });
return  [varForID, arrObj]; // обратите внимание сюда    
}
 autocomleteRemovedArrWatcher('service_2', 'GET', '/getFifthParams', '#serviceType_2', 'service');
 
не получается при обращении к функции получить этот  arrObj
 
консоль пишет.  arrObj is not defined. подскажите. что делаю непраильно или помогите ссылкой где прочитать?  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.01.2015, 19:53
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.03.2012 
					
					
					
						Сообщений: 3,744
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Dtri
			
		
	 | 
 
	| 
		вы не на то обратили внимание в посте. Но да ладно. Зато вы указали на ошибку в коде ту которую проглядел.
	 | 
 
	
 
 
	
 
	| 
		
			Сообщение от Dtri
			
		
	 | 
 
	| 
		return  [varForID, arrObj]; // обратите внимание сюда   
	 | 
 
	
 
 и зачем туда обращать внимание?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.01.2015, 20:10
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.12.2014 
					
					
					
						Сообщений: 86
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от bes
			 
		
	 | 
 
	| 
		и зачем туда обращать внимание?
	 | 
 
	
 
 чтобы легче было разобраться, в том что я спрашивать буду ниже.
 
я вышел из положения объявив переменные глобально к которым присваиваю результат внутри функций. Это помогло.
 
оказалось return вообще не нужен.
 
в данном вопросе. Как оно обычно и бывает. пока писал пост уже решил проблему)))
 
Но спасибо за внимание.
 
вот как выглядит код теперь. если интересно:
 
var arrObj;
function autocomleteRemovedArrWatcher(id, type, url, data, arr)  {
    var varForID;
    function f( type, url, data, arr)    {
        $.ajax({
                type: type,
                url: url,
                data: sendFormAb($(data).val()),
                async: false,
                success: function (jsonVars) {
                    //jsonVars[arr] instanceof Object?alert(sendFormAb(jsonVars[arr])):{}
                    if  (jQuery.type(jsonVars[arr]) !== 'object') {
                      varForID = jsonVars[arr]
                    } else  {
                        //alert([jsonVars[arr]].join('\n'))
                        var keys = new Array();
                        for (var key in jsonVars[arr]) {
                            keys.push(key);
                        }
                        varForID = keys;
                        arrObj = jsonVars[arr];
                    }
                },
                complete: function()    {
                    $('#'+id).trigger('dropDownLoaded');
                }
        });
    }
    function f0()   {
        $('#'+id).focus();
    }
    function f1(id){
        if($('.autoCompleteInput_'+id).length==0) {
            $('<div class="autoCompleteInput autoCompleteInput_'+id+'"  style="width:'+(($('#'+id).width())*1+20*1)*1+'px;">').insertBefore('#'+id);
            $('#'+id).appendTo('.autoCompleteInput_'+id);
            $('#'+id).after('<div class="dropDownList dropDownList_'+id+'" style="width:'+$('#'+id).css('width')+';"></div>');
        }else    {
            $('.dropDownList_'+id).show();
        }
    }
    function f2(arr, id)   {
        $('.dropDown_'+id).remove();
        for (var i in arr)  {
            if  ((arr[i].indexOf($('#'+id).val())!==-1)&&(arr[i]!==''))  {
                $('.dropDownList_'+id).append('<div class="dropDown dropDown_'+id+'">'+arr[i]+'</div>');
            }
        }
    }
    function f3(id)    {
        $('.dropDown_'+id).on('mousedown', function(){
           $('#'+id).val( $(this).html()).trigger('changed');
           $('#'+id).trigger('inputDropDownClick');
        });
        $('#'+id).on('blur', function(){
            $('.dropDownList_'+id).hide();
        });
    }
    function f4(id)   {
        $('#'+id).on('inputDropDownClick', function(){
            $('.dropDownList_'+id).hide();
        });
    }
    function f5()   {
        $('#'+id).trigger('changed');
    }
    $('#'+id).on({
        click: function()   {
            f(type, url, data, arr);
        },
        dropDownLoaded: function()  {
            f1(id);
            f2(varForID, id);
            f3(id);
            f4(id);
            f0();
        },
        keyup: function()   {
            f1(id);
            f2(varForID, id);
            f3(id);
            f4(id);
            f5();
        }
    });
}
вызов функции: 
autocomleteRemovedArrWatcher('service_2', 'GET', '/getFifthParams', '#serviceType_2', 'service');
 
$('#service_1').on('blur', function () { 
         alert(arrObj[$('#service_1').val()]); 
    });  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.01.2015, 20:11
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.12.2014 
					
					
					
						Сообщений: 86
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Если есть критика или замечания по оптимизации или другим ошибкам. буду благодарен если укажите. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.01.2015, 20:18
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.03.2012 
					
					
					
						Сообщений: 3,744
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Dtri
			
		
	 | 
 
	
		чтобы легче было разобраться, в том что я спрашивать буду ниже. 
 
я вышел из положения объявив переменные глобально к которым присваиваю результат внутри функций. Это помогло. 
 
оказалось return вообще не нужен.
	 | 
 
	
 
 вообще-то тебе сразу  сказали -  логическая ошибка
 
	
 
	| 
		
			Сообщение от Dtri
			
		
	 | 
 
	| 
		Если есть критика или замечания по оптимизации или другим ошибкам. буду благодарен если укажите.
	 | 
 
	
 
 без тестового кода, мало кому интересно, что ты там нагородил, твой пример - не тестовый код, может быть выдержка из него 
тестовый пример - это когда запустил и что-то получил/не получил, если есть ошибки  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |