2011-11-24 16 views
5

tengo muy pocos problemas pero no sé cómo resolverlos. Necesito enviar un JSON con una función, pero con parámetros y este es mi problema.JSON con valor de función con los parámetros

Envío de una función en JSON es simple:

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

necesito otra cosa, necesito pasar a la función func como parámetros con los parámetros.

Ejemplo:

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

Pero esto no funciona :(

Cualquier ayuda con esto será realmente appreaciated

+5

Eso no es JSON. JSON no tiene el concepto de funciones. Es simplemente un objeto de JavaScript. Tienes que ser más claro sobre lo que quieres enviar, dónde y cómo. –

Respuesta

1

Es un poco claro lo que quiere, pero si desea define una función que acepta parámetros, querrás algo como esto;

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

Puedes c rear una función que se ha cerrado sobre esos argumentos:

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

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

Así que la función externa anteriormente se invoca, recibe los argumentos, y devuelve una función que cuando se invoca utiliza estos argumentos originales.

another_func(jsVariable); 

function another_func(obj) { 

    obj.func(); // 7 

} 

Por supuesto, esto no tiene nada que ver con JSON. No podrá serializar ninguna parte de las funciones.

1

¿Está buscando poder pasar cualquier número de parámetros a la función? Si es así, trate de pasar una matriz a su función y iterar a través de, por ejemplo:

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

y llamarlo usando

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

Fiddle

Cuestiones relacionadas