2013-04-09 145 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; 

} 

出于某种原因,提醒工作,但我不能让它返回给我的字符串。我甚至试图返回的500的随机值,并且它不..

+3

这工作正常为了我。你如何运行它? – Xymostech 2013-04-09 21:27:53

+0

谢谢,那是我拥有的简单版本..我会将我的代码添加到它现在 – gray 2013-04-09 21:28:49

+0

'quad = doubl + doubl' - >'var quad = doubl + doubl;' – AaronLS 2013-04-09 21:31:40

回答

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 2013-04-09 22:04:18

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

问题是,你永远不会退出你的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 
} 

,然后把之后发生的任何事也放入该函数中。

相关问题