2011-11-24 11 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); 
} 

しかし、これはそれはあなたが望むものを少しは不明だが、あなたがしたい場合はこれですべてのヘルプは本当に

+5

これはJSONではありません。 JSONには機能の概念がありません。これは単なるJavaScriptオブジェクトです。どこに、どのように送信したいかについて、より明確にする必要があります。 –

答えて

1

をappreaciatedされます:(

を動作しません。パラメータを受け入れる関数を定義すると、このようなものが必要になります。

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

これらの引数の上に閉じた機能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

関連する問題