2013-04-09 2 views
0

그래서 당신은 아래 var doub에 값을 할당 할 수javascript/jQuery에서 다른 함수를 호출하는 함수에서 반환 값을 얻으려면 어떻게해야합니까?

function getDouble(number) { 
    var doubl = number + number; 
    return doubl; 
} 

var num = 4; 
var doub = getDouble(num); 

가 나는 다음과 같이 두 번째 함수를 호출하여 반환 유형을 얻을 수 있는지 알고 싶어요. 두 번째 방법의 반환 값을 doub에 할당 할 수 있습니까?

function getDouble(number) { 
    var doubl = number + number; 
    return quadruple(doubl); 
} 

function quadruple(doubl) { 
    quad = doubl + doubl 
    return quad; 
} 

var num = 4; 
var doub = getDouble(num); 

어떤 이유인지 그것은 나를 위해 작동하지 않습니다.

이는 problem..I 위과 비슷한 일을하지만 작동하지 오전 내 코드입니다 :

을 내 문서에 준비,이 code..I는 결과가 에 저장하려면이 newjsn

$(document).ready(function() 
    { 
    var newjsn= DatabaseCategoriesToSelectList(num, 200, 100); 

내 DatabaseCategoriesToSelectList 기능은 다음과 같습니다

어떤 이유
function DatabaseCategoriesToSelectList(jsn, max, min){ 

    var ddl="<option selected='selected' value='"+min+"'>Select...</option>"; 

    //load categories from database, and put them into the select drop down. 
    $.getJSON(GLOBALURL+'content/plugins/subcategories/getSubcategories.php',    
     function(data, ddl) { 

      var datas= jQuery.grep(data, function(element, index){ 
       return element.category_id < max && element.category_id>min; // retain appropriate elements 
      }); 
      for (x=0; x<datas.length; x++){ 
       ddl= ddl+"<option value='"+datas[x].category_id+"'data-subcategory='"+datas[x].category_subselect+"'>"+datas[x].category_safe_name+"</option>"; 
      } 
      alert (ddl); return runafter(ddl, jsn); 
     }); 

} 

function runafter(ddl, jsn){ 
    jsn=ddl; 
    alert(jsn); 

    return 500; 

} 

, 경고는 작동하지만 그럴 수 없어 나에게 문자열을 돌려 주라고. 난

+3

이 잘 작동합니다 나를 위해. 너 어떻게 지내니? – Xymostech

+0

감사합니다. 글쎄요, 제가 가지고있는 것의 단순한 버전입니다.이제 내 코드를 추가 할 것입니다. – gray

+0

'quad = doubl + doubl' ->'var quad = doubl + doubl; ' – AaronLS

답변

1

getJson 핸들러의 반환에 액세스 할 수 없습니다. 프레임 워크는 핸들러를 호출합니다. 당신은 함수를 제공하고, .getJson은 응답이 수신 될 때/그 함수를 호출합니다. runAfter 반환에 대한 액세스가 필요한 경우 계획 한대로 실행해야합니다.

대신에 :

$.getJSON(GLOBALURL+'content/plugins/subcategories/getSubcategories.php', 
    function(data, ddl) { 

      ... 
      return runafter(ddl, jsn); 
    }); 
} 

당신은 예를 들어, 당신이 그 값으로 수행 할 작업을 결정해야합니다 나는 어쩌면 몇 가지 숨겨진 필드의 값으로 물건은 :

$.getJSON(GLOBALURL+'content/plugins/subcategories/getSubcategories.php', 
    function(data, ddl) { 

      ... 
      $('#someField').val(runafter(ddl, jsn)); 
    }); 
} 
+0

나는이 방법을 사용하여, 아주 잘 작동, 감사합니다 – gray

1

Fiddle .. (500)의 임의의 값을 반환하고,이 나던하려고 : 당신이하고있는 것은 잘입니다 (출력은 16)

로해야

function getDouble (number){ 
    var doubl = number+number; 
    return quadruple(doubl); 
    } 

function quadruple(doubl){ 
var quad=doubl+doubl 
return quad; 
} 

var num = 4; 
var doub = getDouble(num); 
2

문제는 사용자가 DatabaseCategoriesToSelectList 기능을 다시 사용할 수 없다는 것입니다. 귀하의 기능은 다음과 같습니다

function DatabaseCategoriesToSelectList(jsn, max, min) { 
    ... 
    $.getJSON(GLOBALURL+'content/plugins/subcategories/getSubcategories.php',    
     function(data, ddl) { 
      ... 
      return runafter(ddl, jsn); 
     } 
    ); 
} 

내부 returnDatabaseCategoriesToSelectList에서 반환하지 않습니다, 그것은 내부 함수에서 반환됩니다. 그러나 $.getJSON은 비동기 호출이므로이 값을 원하는 값으로 되돌릴 수 없습니다.

function(data, dll) { 
    ... 
    var newjsn = runafter(ddl, jsn); 
    // put the rest of your stuff that uses newjsn here 
} 

등의 코드를 코드에 넣은 다음 그 뒤에 오는 내용도 해당 기능에 넣어야합니다.

관련 문제