如何从调用javascript / jQuery中的另一个函数的函数中获取返回值?

时间:2013-04-09 21:24:20

标签: javascript jquery return

因此,您可以将值分配给var doub,如下所示:

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);

由于某种原因,它对我不起作用。

这是我的代码问题..我正在做类似于上面的事情,但没有工作:

在我准备好的doc中,我有这个代码..我希望结果存储在 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;

}

出于某种原因,警报有效,但我无法让它返回字符串。我甚至试图返回500的随机值,它没有..

3 个答案:

答案 0 :(得分:2)

问题是你永远不会退出DatabaseCategoriesToSelectList功能。你的功能如下:

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

内部return没有返回DatabaseCategoriesToSelectList,它正在返回内部函数。但是,无论您做什么,都无法返回您想要的值,因为$.getJSON是异步调用。你必须把像

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

在您的代码中,然后将之后发布的内容也放入该函数中。

答案 1 :(得分:1)

Fiddle输出为: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 :(得分: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) ); 
  });
}