Hoe een sessie maken met JavaScript?

Hoe sessie maken in JavaScript?

Ik probeer dit leuk:

<script type="text/javascript" >
{
Session["controlID"] ="This is my session";
}
</script> 

Waarom ik zoek naar sessie?

Ik doe een verzoek om XML met Ajax. XML-reactie Ik wil in sessie opslaan en deze sessie wil ik doorgeven aan de serverpagina (.asp). Ik bedoel om iets te schrijven als:

<% response.write session("MySession")%>

Antwoord 1, Autoriteit 100%

U kunt stringinformatie opslaan en lezen in een cookie.

Als het een sessie-ID is van de server, kan de server deze cookie genereren. En wanneer een ander verzoek naar de server wordt verzonden, zal de cookie ook komen. Zonder iets in de browser te hoeven doen.

Als het echter JavaScript is dat de sessie-ID maakt. U kunt een cookie maken met JavaScript, met een functie zoals:

function writeCookie(name,value,days) {
    var date, expires;
    if (days) {
        date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        expires = "; expires=" + date.toGMTString();
            }else{
        expires = "";
    }
    document.cookie = name + "=" + value + expires + "; path=/";
}

Dan op elke pagina heb je deze sessie-ID nodig die je de cookie kunt lezen, met een functie zoals:

function readCookie(name) {
    var i, c, ca, nameEQ = name + "=";
    ca = document.cookie.split(';');
    for(i=0;i < ca.length;i++) {
        c = ca[i];
        while (c.charAt(0)==' ') {
            c = c.substring(1,c.length);
        }
        if (c.indexOf(nameEQ) == 0) {
            return c.substring(nameEQ.length,c.length);
        }
    }
    return '';
}

De leesfunctie werkt vanaf elke pagina of elk tabblad van hetzelfde domein dat het heeft geschreven, of de cookie is gemaakt vanaf de pagina in javascript of vanaf de server.

Om de id op te slaan:

var sId = 's234543245';
writeCookie('sessionId', sId, 3);

Om de id te lezen:

var sId = readCookie('sessionId')

Antwoord 2, autoriteit 27%

Je kunt lokale opslag gebruiken.

lokale opslag is hetzelfde als sessie. de gegevens worden verwijderd wanneer u de browser sluit.

<script> 
localStorage.setItem('lastname','Smith');
alert(localStorage.getItem('lastname'));
</script>

Bewerken: de opmerking van @Naveen hieronder is correct. U kunt in plaats daarvan sessieopslag gebruiken. (https://www.w3schools.com/jsref/prop_win_sessionstorage.asp) Bedankt.

<script> 
sessionStorage.setItem('lastname','Smith');
alert(sessionStorage.getItem('lastname'));
</script>

Antwoord 3, autoriteit 20%

Ik denk dat je het concept van sessie verkeerd hebt begrepen. Session is een server-side per-user-data-store waarmee je gebruikersgegevens aan de server-kant kunt opslaan.

je hebt dus 2 opties, gebruik cookies die de illusie van een sessie wekken (maar niet helemaal hetzelfde), je hebt heel eenvoudig toegang tot cookies via document.cookie .

maar als je wilt dat je server op de hoogte is van de sessie, moet je een soort serververzoek gebruiken, waarschijnlijk is de beste manier om AJAX te gebruiken om dit te doen.

Ik raad je aan om de definitie van sessies opnieuw te lezen.


Antwoord 4, autoriteit 20%

Ik neem aan dat u ASP.NET MVC (C#) gebruikt, zo niet, dan is dit antwoord niet uw probleem.

Is het onmogelijk om sessiewaarden rechtstreeks via javascript toe te wijzen? Nee, er is een manier om dat te doen.

Kijk nog eens naar je code:

<script type="text/javascript" >
{
Session["controlID"] ="This is my session";
}
</script> 

Een kleine verandering:

<script type="text/javascript" >
{
  <%Session["controlID"] = "This is my session";%>
}
</script>

De sessie “controlID” is gemaakt, maar hoe zit het met de waarde van de sessie? is dat blijvend of kan worden gewijzigd via javascript?

Laten we nog een klein beetje veranderen:

<script type="text/javascript" >
{
  var strTest = "This is my session"; 
  <%Session["controlID"] = "'+ strTest +'";%>
}
</script>

De sessie is gemaakt, maar de waarde binnen de sessie is “‘+ strTest +'” maar niet “Dit is mijn sessie”. Als u een variabele rechtstreeks in de servercode probeert te schrijven, zoals:

<%Session["controlID"] = strTest;%>

Dan zal er een fout optreden in uw pagina “Er is geen parameter strstest in de huidige context …”. Tot nu toe lijkt het nog steeds onmogelijk om sessiewaarden rechtstreeks via JavaScript toe te wijzen.

Ik ga nu naar een nieuwe manier. Webmethod gebruiken bij code achter om dat te doen. Kijk opnieuw je code met een beetje verandering:

<script type="text/javascript" >
{
 var strTest = "This is my session"; 
 PageMethods.CreateSessionViaJavascript(strTest);
}
</script> 

in code achter pagina. Ik maak een webmethod:

[System.Web.Services.WebMethod]
public static string CreateSessionViaJavascript(string strTest)
{
    Page objp = new Page();
    objp.Session["controlID"] = strTest; 
    return strTest;
}

Nadat u de webmethode hebt gesproken om een ​​sessie van JavaScript te maken. De sessie “Controlid” heeft waarde “Dit is mijn sessie”.

Als u de manier gebruikt die ik heb uitgelegd, voeg dan dit blok van Code in Form Tag van uw ASPX-pagina toe. De code helpt om pagina-methoden in te schakelen.

<asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager>

Bron: JavaScript – HOE INSTELLEN Sessie in Javascript

Happy Codding,
Tri


Antwoord 5, Autoriteit 2%

function writeCookie(name,value,days) {
    var date, expires;
    if (days) {
        date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        expires = "; expires=" + date.toGMTString();
            }else{
        expires = "";
    }
    document.cookie = name + "=" + value + expires + "; path=/";
}

Antwoord 6, autoriteit 2%

Je kunt de javascript-plug-in jstorage proberen, het is een elegante manier om sessies te onderhouden
controleer deze http://www.jstorage.info/

neem het jStorage.js-script op in uw html

<script src="jStorage.js"></script>

Plaats vervolgens in uw javascript de sessiontoken in de a-sleutel zoals deze

$.jStorage.set("YOUR_KEY",session_id);

Waarbij “YOUR_KEY” de sleutel is waarmee u toegang kunt krijgen tot uw session_id , als volgt:

var id = $.jStorage.get("YOUR_KEY");

Antwoord 7, autoriteit 2%

U kunt sessionStoragegebruiken, het is vergelijkbaar met localStorage, maar sessionStorage wordt duidelijk wanneer de paginasessie eindigt terwijl localStorage geen vervaldatum heeft.

Zie https://developer.mozilla.org/en-US/ docs/Web/API/Window/sessionStorage


Antwoord 8

U kunt de nameattr gebruiken:

<script type="text/javascript" >
{
window.name ="This is my session";
}
</script> 

Je moet nog steeds zelf het formaat ontwikkelen dat je wilt gebruiken, of een wrapper gebruiken uit een reeds bestaande bibliotheek (mootools, Dojo, enz.).
Je kunt ook cookies gebruiken, maar ze zijn zwaarder op prestaties, omdat ze heen en weer gaan van de klant naar de server en zijn specifiek voor het ene domein.


Antwoord 9

U kunt stringinformatie opslaan en lezen in een cookie.

Als het een sessie-ID is van de server, kan de server deze cookie genereren. En wanneer een ander verzoek naar de server wordt verzonden, zal de cookie ook komen. Zonder iets in de browser te hoeven doen.

Als het echter JavaScript is dat de sessie-ID maakt. U kunt een cookie maken met JavaScript, met een functie zoals:

De leesfunctie werkt vanaf elke pagina of tab van hetzelfde domein die het heeft geschreven, of de cookie is gemaakt op de pagina in Javascript of vanaf de server.


Antwoord 10

Als u een cookie maakt en geen vervaldatum opgeven, maakt deze een sessiekoekje die aan het einde van de sessie vervalt.

Zie https://stackoverflow.com/a/532660/1901857 voor meer informatie.


Antwoord 11

<script type="text/javascript">
function myfunction()
{
    var IDSes= "10200";
    '<%Session["IDDiv"] = "' + $(this).attr('id') + '"; %>'
    '<%Session["IDSes"] = "' + IDSes+ '"; %>';
     alert('<%=Session["IDSes"] %>');
}
</script>

Link


Antwoord 12

Hier is wat ik deed en het werkte, creëerde een sessie in PHP en gebruikte XMLHHTPREQUEST om te controleren of de sessie is ingesteld wanneer een HTML-paginabladers en het werkte voor Cordova.


Antwoord 13

Gebruik HTML5 Lokale opslag. U kunt de gegevens op elk gewenst moment opslaan en gebruiken.

<script>
    // Store
    localStorage.setItem("lastname", "Smith");
    // Retrieve
    var data = localStorage.getItem("lastname");
</script>

Other episodes