Exemple : Transmettre plusieurs valeurs à une ressource web via le paramètre de données
Une page de ressource web (HTML) ne peut accepter qu’un seul paramètre personnalisé appelé data
. Pour transmettre plusieurs valeurs dans le paramètre de données, vous devez encoder les paramètres et les décoder dans votre page.
La page ici représente une technique permettant de transmettre les valeurs supplémentaires au sein d’un paramètre unique et de les traiter dans votre ressource web.
Exemple de ressource web HTML
Le code HTML ci-dessous représente une ressource web (HTML) de page web comprenant un script qui définit trois fonctions :
getDataParam : appelée à partir de l’événement
body.onload
, cette fonction récupère les paramètres de chaîne de requête transmis à la page et recherche un paramètre nommédata
.parseDataValue : reçoit le paramètre de données de
getDataParam
et génère un tableau DHTML pour afficher les valeurs transmises dans le paramètredata
.Note
Tous les caractères inclus dans la chaîne de requête sont encodés à l’aide de la méthode encodeURIComponent. Cette fonction utilise la méthode decodeURIComponent de JavaScript pour décoder les valeurs transmises.
noParams : affiche un message lorsqu’aucun paramètre n’est transmis à la page.
<!DOCTYPE html >
<html lang="en-us">
<head>
<title>Show Data Parameters Page</title>
<style type="text/css">
body
{
font-family: Segoe UI, Tahoma, Arial;
background-color: #d6e8ff;
}
tbody
{
background-color: white;
}
th
{
background-color: black;
color: White;
}
</style>
<script type="text/javascript">
document.onreadystatechange = function () {
if (document.readyState == "complete") {
getDataParam();
}
}
function getDataParam() {
//Get the any query string parameters and load them
//into the vals array
var vals = new Array();
if (location.search != "") {
vals = location.search.substr(1).split("&");
for (var i in vals) {
vals[i] = vals[i].replace(/\+/g, " ").split("=");
}
//look for the parameter named 'data'
var found = false;
for (var i in vals) {
if (vals[i][0].toLowerCase() == "data") {
parseDataValue(vals[i][1]);
found = true;
break;
}
}
if (!found)
{ noParams(); }
}
else {
noParams();
}
}
function parseDataValue(datavalue) {
if (datavalue != "") {
var vals = new Array();
var message = document.createElement("p");
setText(message, "These are the data parameters values that were passed to this page:");
document.body.appendChild(message);
vals = decodeURIComponent(datavalue).split("&");
for (var i in vals) {
vals[i] = vals[i].replace(/\+/g, " ").split("=");
}
//Create a table and header using the DOM
var oTable = document.createElement("table");
var oTHead = document.createElement("thead");
var oTHeadTR = document.createElement("tr");
var oTHeadTRTH1 = document.createElement("th");
setText(oTHeadTRTH1, "Parameter");
var oTHeadTRTH2 = document.createElement("th");
setText(oTHeadTRTH2, "Value");
oTHeadTR.appendChild(oTHeadTRTH1);
oTHeadTR.appendChild(oTHeadTRTH2);
oTHead.appendChild(oTHeadTR);
oTable.appendChild(oTHead);
var oTBody = document.createElement("tbody");
//Loop through vals and create rows for the table
for (var i in vals) {
var oTRow = document.createElement("tr");
var oTRowTD1 = document.createElement("td");
setText(oTRowTD1, vals[i][0]);
var oTRowTD2 = document.createElement("td");
setText(oTRowTD2, vals[i][1]);
oTRow.appendChild(oTRowTD1);
oTRow.appendChild(oTRowTD2);
oTBody.appendChild(oTRow);
}
oTable.appendChild(oTBody);
document.body.appendChild(oTable);
}
else {
noParams();
}
}
function noParams() {
var message = document.createElement("p");
setText(message, "No data parameter was passed to this page");
document.body.appendChild(message);
}
//Added for cross browser support.
function setText(element, text) {
if (typeof element.innerText != "undefined") {
element.innerText = text;
}
else {
element.textContent = text;
}
}
</script>
</head>
<body>
</body>
</html>
Utilisation de cette page
Créez une ressource web de page web appelée « new_/ShowDataParams.htm » en utilisant l’exemple de code.
Les paramètres à transmettre sont :
first=First Value&second=Second Value&third=Third Value
Note
Si vous ajoutez des paramètres statiques à l’aide de la boîte de dialogue Propriétés de la ressource web de l’éditeur de formulaires, vous pouvez simplement coller les paramètres sans les encoder dans le champ Custom Parameter(data). Ces valeurs sont encodées pour vous, mais vous devez quand même les décoder et extraire les valeurs dans votre page.
Pour les valeurs dynamiques générées dans le code, utilisez la méthode
encodeURIComponent
sur les paramètres. Les valeurs encodées doivent être :first%3DFirst%20Value%26second%3DSecond%20Value%26third%3DThird%20Value
Ouvrez la page en transmettant les paramètres encodés en tant que valeur du paramètre de données :
https://<server name>/WebResources/new_/ShowDataParams.htm?Data=first%3DFirst%20Value%26second%3DSecond%20Value%26third%3DThird%20Value
Note
Si vous avez ajouté la ressource web à un formulaire et collé les paramètres non codés dans le champ Custom Parameters(data), il vous suffit de prévisualiser le formulaire.
new_/ShowDataParams.htm
affiche un tableau généré dynamiquement :Paramètre Valeur Premier Première valeur Deuxième Deuxième valeur Troisième Troisième valeur
Fonctionnement
Pour accéder aux valeurs incorporées dans la valeur du paramètre de chaîne de requête de données, dans la ressource web de votre page web, vous pouvez extraire la valeur du paramètre de données, puis utiliser le code pour scinder la chaîne en tableau afin que vous puissiez accéder individuellement à chaque paire de valeurs de nom.
Lorsque la page se charge, la fonction getDataParam
est appelée. Cette fonction identifie simplement le paramètre de données et transmet la valeur à la fonction ParseDataValue
. Si aucun paramètre de données n’est trouvé, la fonction noParams
ajoute un message à la page au lieu du tableau.
La fonction ParseDataValue
utilise une logique similaire contenue dans getDataParam
pour rechercher les délimiteurs de paramètre personnalisés afin de créer un tableau de paires de valeurs de nom. Elle génère ensuite un tableau et l’ajoute au document.body vide.
Voir aussi
Ressources web pour Dynamics 365 Customer Engagement (on-premises)
Exemple : Importer des fichiers en tant que ressources web
Ressources web des pages web (HTML)
Ressources web (XAP) Silverlight