Beispiel: Übergeben mehrerer Werte an eine Webressource über den Datenparameter

Eine (HTML)-Webressourcenseite kann nur einen einzelnen benutzerdefinierten Parameter akzeptieren, der data genannt wird. Um mehrere Werte im Datenparameter zu übergeben, müssen Sie die Parameter codieren und die Parameter auf Ihrer Seite decodieren.

Die seite hier stellt eine Technik dar, um die zusätzlichen Werte innerhalb eines einzelnen Parameters zu übergeben und diese dann in Ihrer Webressource zu verarbeiten.

Beispiel-HTML-Webressource

Der folgende HTML-Code stellt eine Webressource einer Webseite (HTML) dar, die ein Skript enthält, das drei Funktionen definiert:

  • getDataParam: Vom body.onload Ereignis aufgerufen, ruft diese Funktion alle Abfragezeichenfolgenparameter ab, die an die Seite übergeben werden, und sucht nach einem benannten Parameter data.

  • parseDataValue: Empfängt den Datenparameter aus getDataParam und erstellt eine DHTML-Tabelle, um alle Werte anzuzeigen, die innerhalb des data Parameters übergeben werden.

    Hinweis

    Alle in der Abfragezeichenfolge enthaltenen Zeichen werden mit der encodeURIComponent-Methode codiert. Diese Funktion verwendet dieJavaScript-DecodeURIComponent-Methode , um die übergebenen Werte zu decodieren.

  • noParams: Zeigt eine Meldung an, wenn keine Parameter an die Seite übergeben werden.

<!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>  
  

Verwenden dieser Seite

  1. Erstellen Sie eine Webseite-Webressource namens "new_/ShowDataParams.htm" mithilfe des Beispielcodes.

    Die Parameter, die Sie übergeben möchten, sind: first=First Value&second=Second Value&third=Third Value

    Hinweis

    Wenn Sie statische Parameter mithilfe des Dialogfelds "Webressourceneigenschaften" aus dem Formular-Editor hinzufügen, können Sie die Parameter einfach einfügen, ohne sie in das Feld "Custom Parameter(data)" zu codieren. Diese Werte werden für Sie codiert, aber Sie müssen sie trotzdem decodieren und die Werte auf Ihrer Seite extrahieren.

  2. Verwenden Sie für dynamische Werte, die im Code generiert werden, die encodeURIComponent Methode für die Parameter. Die codierten Werte sollten folgendes sein:

    first%3DFirst%20Value%26second%3DSecond%20Value%26third%3DThird%20Value

    Öffnen Sie die Seite, die die codierten Parameter als Wert des Datenparameters übergibt:

    https://<server name>/WebResources/new_/ShowDataParams.htm?Data=first%3DFirst%20Value%26second%3DSecond%20Value%26third%3DThird%20Value  
    

    Hinweis

    Wenn Sie die Webressource zu einem Formular hinzugefügt und die nicht codierten Parameter in das Feld "Benutzerdefinierte Parameter(Daten)" eingefügt haben, können Sie einfach eine Vorschau des Formulars anzeigen.

  3. new_/ShowDataParams.htm zeigt eine dynamisch generierte Tabelle an:

    Parameter Wert
    erste Erster Wert
    zweite Zweiter Wert
    Dritte Dritter Wert

Funktionsweise

Um auf die werte zuzugreifen, die in den Parameterwert der Datenabfragezeichenfolge eingebettet sind, können Sie in Ihrer Webressource der Webseite den Wert des Datenparameters extrahieren und dann code verwenden, um die Zeichenfolge in ein Array aufzuteilen, damit Sie auf jedes Namenswertpaar einzeln zugreifen können.

Wenn die Seite geladen wird, wird die getDataParam Funktion aufgerufen. Diese Funktion identifiziert einfach den Datenparameter und übergibt den Wert an die ParseDataValue Funktion. Wenn kein Datenparameter gefunden wird, fügt die noParams Funktion der Seite anstelle der Tabelle eine Meldung hinzu.

Die ParseDataValue-Funktion verwendet eine ähnliche Logik wie getDataParam, um die benutzerdefinierten Parametertrennzeichen zu finden und ein Array mit Name-Wert-Paaren zu erstellen. Anschließend wird eine Tabelle generiert und an das sonst leere Dokument.body angefügt.

Siehe auch

Webressourcen für Dynamics 365 Customer Engagement (on-premises)
Beispiel: Importieren von Dateien als Webressourcen
Webseite (HTML)-Webressourcen
Silverlight (XAP)-Webressourcen