CRM 2011: Pasar parámetros a un webresource de tipo HTML

20 05 2012

Uno de los temas a tener en cuenta cuando trabajamos con webresource de tipo HTML es que, para pasar parámetros al HTML, tan solo podemos usar la variable data en la URL. Así por ejemplo si llamamos a un webresource con otros parámetros que no sean el parámetro data obtenemos este error:

/webresource/Test.html?test=test

Por tanto, si queremos pasar parámetros al webresource, tendremos que usar la variable data. Pero, ¿como podemos entonces determinar que variables estamos pasando?. Imaginemos que queremos pasar dos variables al webresource de tipo HTML (var1 y var2), tenemos dos opciones:

Opción1. Establecer el formato de las variables y pasar los valores de las mismas separadas con un símbolo (por ejemplo, |). De este modo, en el HTML deberemos parsear el valor de la variable data y obtener los valores de las variables var1 y var2. Sin embargo esto nos obliga a establecer un orden de los valores en la URL. En el siguiente ejemplo, queremos pasar los valores test1 y test2 a las variables var1 y var2 respectivamente.

/webresource/Test.html?data=test1|test2

En el código del HTML debemos parsear la variable data a través del carácter | y asignar el valor de la posición 0 a var1 y la posición 1 a var2. El problema lo tenemos cuando quien usa el webresource no sabe el orden de asignación de las variables…

Opción 2. Componer en el parámetro data el nombre de variable y el valor separado por otro carácter (por ejemplo +), distinto del carácter que usemos para separar las asignaciones. De este modo podemos pasar los valores de las variables en el orden que queramos e incluso obviar alguna de las variables. En cualquier caso, en el código HTML debemos establecer las variables pasadas en la URL a través del parámetro data.

/webresource/Test.html?data=var1+test1|var2+test2

A partir de la variable data, parseamos para obtener las asignaciones y, para cada asignación parseamos el nombre de la variable del valor (parseando por el carácter +). Posteriormente, creamos una array con cada par y creamos una función que devuelva el valor para una variable o creamos un switch que a partir del nombre de la variable, asigne el valor…

<html>
<head>
<title>Asignación de variables a partir de parámetros en un webresourece de tipo HTML</title>
<script type="text/javascript">
var var1 = "";
var var2 = "";
function OnLoad() {
try {
var params = getUrlParam("data").split("|");
for (i = 0; i < params.length; i++) {
var vls = params[0].split("+");
switch (vls[0]) {
case "var1":
var1 = vls[1];
break;
case "var2":
var2 = vls[1];
break;
}
alert("La variable " + vls[0] + " se ha inicializado con el valor " + vls[1]);
}
}
catch (e) {
}
}
</script>
</head>
<body onload="OnLoad()">
<div id="results"></div>
</body>
</html>

Obviamente debemos tener en cuenta los casos en los que el usuario quiera pasar los caracteres que usemos como delimitadores en el propio texto… controlar cuando no pasa ningún parámetro… Pero eso entiendo que seréis capaces de controlarlo ampliando este código ;-).

Anuncios

Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: