2013-04-09 207 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 
} 

,然後把之後發生的任何事也放入該函數中。

相關問題