2017-08-15 5 views
0

J'ai besoin d'aide pour transmettre des données entre deux pages aspx (ces pages aspx sont stockées dans SharePoint Designer). J'ai créé du JavaScript qui fait quelques calculs simples pour les mesures sur notre site.Passage de données entre deux pages aspx en utilisant javascript

https://tandemhospitalpartners.sharepoint.com/SitePages/Home.aspx

Le JavaScript suivant est le lien ASPX ci-dessus.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
 
        "http://www.w3.org/TR/html4/loose.dtd"> 
 
<html> 
 
<head> 
 
    <script type="text/javascript"> 
 
     window.onload = function() 
 
     { 
 

 
     } 
 
     
 
     function p1() 
 
     { 
 

 
      totalPts = 137; 
 
      setTotalPts(totalPts); 
 
      
 
      
 
      divId = document.getElementById('avg'); // element represents the ID 'countdown' for the div 
 

 
      today = new Date(); //this represents todays date in the following format 
 
      //Weekday ex. "Tue" 
 
      //Month ex. "Aug" 
 
      //Todays Date ex. "08" 
 
      //Year ex. "2017" 
 
      //Time ex. "13:44:54 GMT - 0500 (Central Daylight Time" 
 

 

 
      svOpen = new Date(2017, 06, 17); // this represents the first day we accepted patients 
 
      
 

 
      one_day = 1000 * 60 * 60 * 24; 
 
      //milliseconds 
 
      //minutes 
 
      //seconds 
 
      //hours 
 

 

 
      //We have been open for 23 days 
 

 

 
      daysOpen = Math.ceil((today.getTime() - svOpen.getTime())/(one_day)); 
 
      //subtracting SVNH open date from current date 
 

 

 

 

 

 

 
      
 

 

 
      
 

 
      avgPts = parseFloat(totalPts)/parseFloat(daysOpen); 
 

 
      
 
      divId.innerHTML ="Average Patients Per Day: "+ avgPts.toFixed(1); 
 
     } 
 
     function GetDays(element) 
 
     { 
 
      
 
      var el = document.getElementById(element); 
 
      today = new Date(); 
 
      var cmas = new Date(today.getFullYear(), 6, 12); 
 
      if (today.getMonth() == 6 && today.getDate() > 13) { 
 
       cmas.setFullYear(cmas.getFullYear() + 1); 
 
      } 
 
      var one_day = 1000 * 60 * 60 * 24; 
 
      el.innerHTML ="&nbsp;&nbsp;Days to open the second Hospital: &nbsp;&nbsp;&nbsp;"+Math.ceil((cmas.getTime() - today.getTime())/(one_day)); 
 
     } 
 
     function setTotalPts(totalPts) 
 
     { 
 
      totId = document.getElementById("leOne"); 
 

 
      totId.innerHTML = "This is my total patients: " + totalPts.toString(); 
 

 

 
     } 
 

 
    </script> 
 
</head> 
 
<body onload="p1(); GetDays('count'); setTotalPts();"+"text"> <!-- this onload is passing the div ID to the function p1(element) 
 
             element represents the ID --> 
 

 
<div id='count' style="color: #e51400 ; 
 
font-weight : 500;"></div> 
 
</body> 
 

 

 
<body> 
 

 
<div id='avg' style="color: #e51400 ; 
 
font-weight : 500;"></div> 
 

 

 

 
</body> 
 

 
<body> 
 

 
<div id='leOne' style="color: #e51400 ; 
 
font-weight : 500;"></div> 
 

 

 

 

 
</body> 
 
</html> 
 

 

 
<!-- to keep a running count of the days i will have to subtract svOpen from todaysDate

Mon but est de passer à un totalPts ID HTML qui est sur un fichier ASPX différent.

Ceci est le lien vers le fichier ASPX qui contient l'ID HTML que je veux également envoyer.

https://tandemhospitalpartners.sharepoint.com/ININD/SitePages/Home.aspx

C'est là que je suis vraiment confus. Je ne suis pas sûr de la façon d'atteindre ce résultat. Si quelqu'un a des idées sur la façon dont cela pourrait être fait en utilisant JavaScript, je l'apprécierais grandement!

Répondre

1

Vous ne pouvez pas accéder au code HTML d'une autre page à partir du côté client d'une autre page car le web est un environnement sans état. Mais à partir de la première page, vous pouvez passer les données via la chaîne de requête à la page suivante ou enregistrer les données dans localStorage, puis naviguer jusqu'à la page suivante et récupérer les données de localStorage. Je préfère Querystring car il semble que c'est juste un nombre que vous voulez passer.

Supposons que vous avez un bouton qui ouvre la deuxième page

<asp:Button runat="server" ID="btnNext" OnClientClick="location.href='https://tandemhospitalpartners.sharepoint.com/ININD/SitePages/Home.aspx?totalPointes=' + getTotalPoints()" Text="Inind Home"></Button> 

Puis, dans la page de destination les totalPoints de querystring et enregistrez l'élément. par exemple.

$("#SomeID").val(getvaluefromQuerystring()); 
+0

Merci beaucoup pour votre réponse. J'ai encore quelques questions si cela ne vous dérange pas. Devrais-je créer une fonction javascript sur la deuxième page? Est-ce que je dois le faire à l'aide d'un bouton? Et dois-je créer une méthode getTotalPoints() dans le javascript qui se trouve dans la première page? D'après ma compréhension il semble que getTotalPoints() sera une méthode dans mon JS sur la première page qui aura une ligne de retour qui renvoie la variable que je voudrais utiliser? – hcienfue

0
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script 
    src="https://code.jquery.com/jquery-3.2.1.js" 
    integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" 
    crossorigin="anonymous"></script> 

    <script> 
     $(document).ready(function() { 
      $("#dvValue").html(getUrlParameter("totalPointes")); 
     }); 

     //This function gets the querystring value from the querystring 
     function getUrlParameter(name) { 
      name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]'); 
      var regex = new RegExp('[\\?&]' + name + '=([^&#]*)'); 
      var results = regex.exec(location.search); 
      return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' ')); 
     }; 
    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <div id="dvValue"></div> 
    </div> 
    </form> 
</body> 
</html> 
+0

Je récupère la valeur du paramètre querystring "totalPointes" et enregistre sa valeur dans un div avec l'ID "dvValue" –