8 Stimmen

Kann JavaScript das HTTP-Sitzungsobjekt lesen?

Ist es möglich, den Wert einer dynamischen Variable wie httpRequest.getSession("attr_name") von innerhalb eines JavaScripts zu lesen?

13voto

Guffa Punkte 663241

(Mit Javascript meine ich, dass Sie Client-Skript im Browser verwenden.)

Nein, das ist nicht möglich. Der Inhalt des Session-Objekts verlässt niemals den Server, daher kann Client-Skript Session-Daten nicht direkt lesen.

Wenn Sie darauf im Browser zugreifen möchten, müssen Sie die Daten aus dem Session-Objekt lesen und sie in der Antwort mit senden (zum Beispiel in einem versteckten Feld) oder einen Webdienst bereitstellen, der Daten aus dem Session-Objekt liest und an den Browser zurücksendet.

3voto

asawyer Punkte 17240

Wie ich in meinem Kommentar sagte, wäre der einzige Weg irgendeine Art von Ajax-Aufruf und Anforderung vom Server. Ich weiß nicht, welches Backend du benutzt, so würde ich es in Asp.net MVC und jQuery machen.

(Wenn es kleine Syntaxfehler gibt, entschuldige ich mich - nicht vor einem Compiler)

public class HomeController : Controller
{

    //abstrahiere den Sitzungscode, lass das böse JavaScript nicht direkt darauf zugreifen
    public string NameAttribute
    {
       get
       {
           return Session["attr_name"] as string ?? string.empty;
       }
    }
    [HttpGet]
    public string GetNameAttribute()
    {
        return NameAttribute;
    }
    public ActionResult Index()
    {
        return View();
    }
}

$(function(){
    $.get( 'home/GetNameAttribute', function( response ) {
        var name = response; //folge nicht zu vergessen, Fehlerüberprüfung, weggelassen
    });
});

Alternativ könntest du immer die Werte, die du brauchst, in versteckte Felder schreiben und sie mit normalem JavaScript lesen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X