2011-11-24 104 views
5

我有一個很小的問題,但不知道如何解決它。 我需要發送一個JSON函數,但帶參數,這是我的問題。JSON函數值與參數

發送在JSON的功能很簡單:

var jsonVariable = { var1 : 'value1', var2 : 'value2', func: function(){ alert('something'); } }; 

我需要別的東西,需要通過FUNC功能與參數的參數。

例子:

var jsonVariable = { var1 : 'value1', var2 : 'value2', func: funcParam(param1,param2) }; 
function(parameter1, parameter2){ 
    alert(parameter1 + parameter2); 
} 

但是,這不工作:(

任何幫助,這將是非常appreaciated

+5

這不是JSON。 JSON沒有功能的概念。它只是一個JavaScript對象。你必須更清楚你想發送什麼,在哪裏以及如何發送。 –

回答

1

這是一個有點不清楚你想要什麼,但如果你想定義一個接受參數的函數,你需要類似這樣的東西;

var jsonVariable = { var1 : 'value1', var2 : 'value2', func: function(param1, param2){ alert(param1 + param2); } }; 
0

你可以c reate已經關閉了這些參數的函數:

var send_func = (function(param1, param2) { 
    return function(){ 
     alert(param1 + param2); 
    }; 
}(3, 4)); 

var jsVariable = { var1 : 'value1', var2 : 'value2', func: send_func }; 

所以上述外部函數被調用時,接收到的參數,並返回該調用時使用這些原始自變量的函數。

another_func(jsVariable); 

function another_func(obj) { 

    obj.func(); // 7 

} 

當然這與JSON無關。您將無法序列化任何部分的功能。

1

您是否希望能夠將任意數量的參數傳遞給函數?如果是這樣,嘗試將數組傳遞給你的函數和遍歷,如:

var jsonVariable = { 
    var1 : 'value1', 
    var2 : 'value2', 
    func: function(params){ 
     var alertString = ""; 
     for (var i = 0; i < params.length; i++) 
      alertString+=params[i]+" "; 
     alert(alertString); 
    } 
}; 

,並使用

jsonVariable.func(["param1", "param2"]); 

Fiddle