Hallo zusammen,
zu aller erst: meine Applikationsumgebung ist ASP.NET MVC2 in Zusammenarbeit mit jQuery.
Wie's bei den meisten RIAs der Fall ist, verwende auch ich Ajax, um nur einzelne Bestandteile der Seite zu laden. Für den Workflow einiger Bereiche, deren Ladezeiten beim ersten Aufruf ein paar/10 Sekunden dauern kann, ist dies auch absolut von Nöten - zu optimieren ist hier leider nicht mehr viel.
Um dem Anwender aber die Möglichkeit zu geben, die Ajax-Auswahl einfach einem anderen Benutzer zukommen zu lassen, würde ich gerne die URL aktualisieren, sprich Elemente des Query-Strings (er)setzen.
Da mir Javascript augenscheinlich nur .location.href (leider inklusive Reload) und .location.href (leider nur ein Anker) setzen kann schwebe ich ein wenig in der Luft, wie ich die URL, die ich per Ajax-Aufrufe, in die Browserzeile setzen kann. Im Controller selbst erkenne ich, ob es ein Ajax-Aufruf ist oder nicht und kann dementsprechend reagieren.
Lange Rede kurzer Sinn: ich suche eine Möglichkeit die Browser-Adresszeile zu aktualisieren, ohne dass die gesamte Seite neu geladen wird, wie es zum Beispiel auch bei Facebook der Fall ist ( ex. Bildergalerien ). oder Alternativen.
Dass das direkte Setzen der Browseradresszeile aus Sicherheitsgründen ohne Reload nicht geht ist mir bekannt. HTML 5 Möglichkeiten scheiden aufgrund der Browser-Vorgabe (IE7/8) aus.
Danke für Ideen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Was mein Problem absolut nicht löst, oder was genau willst Du mir sagen? Google ist mir eine geläufige Seite 🤔 Ein paar Worte Deinerseits über die Anwendung dessen würde sicherlich nich Schaden, als nur den Google-Link zu präsentieren...
Ich will, dass die Adresszeile aktualisiert wird, sodass der Anwender (a) den Link mitten im Workflow kopiert werden kann und Anwender (b) die identische Seite erhält.... dies js aber nativ nicht ohne Reload unterstützt.
Bisher ist es gelöst über das Setzen des Clipboards was die Workability aber nich wirklich fördert... 🙄
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Google Übersetzer arbeitet genau so...
http://translate.google.ch/translate_t?hl=&ie=UTF-8&text=helo&sl=en&tl=de**#en|de|hello**
Das Fragmet "#" kann Serverseitig soviel ich weiss nicht abgefragt werden. Hier musst du eben bei jedem body onload das Fragment auswerten und einen AJAX Request absetzten.
na gleich der erste LInk http://stephenwalther.com/blog/archive/2010/04/08/jquery-asp.net-and-browser-history.aspx macht doch genau das
Google Übersetzer arbeitet genau so...
>Das Fragmet "#" kann Serverseitig soviel ich weiss nicht abgefragt werden. Hier musst du eben bei jedem body onload das Fragment auswerten und einen AJAX Request absetzten.
Wie bereits erwähnt suche ich eine Variante ohne Anker (# -> document.location.hash), eben wegen der Möglichkeit diese am Controller auswerten zu können. Ich möchte/muss mit den Controllern arbeiten. Die Seite Aufrufen und dann über $(document).ready() den Anker abfragen.. finde ich eine unschöne Lösung, da ich hier zu eine weitere Fehlerquelle habe und mehrere "unnötige" Requests am Server auslöse - das wäre die aller letzte Lösung, wenn es wirklich keine andere Möglichkeit gibt.
Da hilft mir auch der erste Link der Google Suche nicht, da meine Links dynamisch entstehen können und somit das Zusammenbauen der URL durch JavaScript nicht infrage kommt.
PushState(), wie es auch HTML 5 ünterstützt und jQuery hier "nur" simuliert, bringt mir ebenfalls überhaupt nichts, da die Möglichkeit der Navigation über die History bei der Adressaktualisierung ebenfalls möglich ist, für mich aber nur das einfache Kopieren der URL - ohne Anker - interessant ist.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo,
Um dem Anwender aber die Möglichkeit zu geben, die Ajax-Auswahl einfach einem anderen Benutzer zukommen zu lassen
muss es denn dafür unbedingt die Addresszeile sein? Könntest ja alternativ einen gültigen Link auf die aktuelle Ansicht (Permalink) gnerieren und auf der Seite ausgeben.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Bitte keine Full Quotes - Zitat entfernt
Man gibt sich manchmal nur mit der besten Möglichkeit zufrieden 😉
Es muss allerdings eine Möglichkeit geben. Ich habe noch nicht ganz herausgefunden, wie Facebook das hin bekommt, aber es geht ja augenscheinlich.
Daran zu erkennen, dass der markierte Text nicht neu geladen wird, die URL sich aber ändert.
Bin nur noch nicht dahinter gekommen, wie das funktioniert, daher hatte ich auf Tipps gehofft.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo,
Daran zu erkennen, dass der markierte Text nicht neu geladen wird, die URL sich aber ändert.
Bin nur noch nicht dahinter gekommen, wie das funktioniert, daher hatte ich auf Tipps gehofft.
schau doch mal in den HTTP-Verkehr.
Möglicherweise wird ja doch ganz normal ein Request ausgeführt, und derServer liefert ein
304 Not Modified
weil er erkennt daß die Anfrage gerade schon gestellt wurde.
Auch wenn das dort nicht so gemacht wird, wäre es vielleicht für Dich eine Möglichkeit.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
und derServer liefert ein
304 Not Modified
Auch wenn das dort nicht so gemacht wird, wäre es vielleicht für Dich eine Möglichkeit.
Ich versteh die Lösungsmöglichkeit nicht.
Wenn ich ein Ajax-Request werfe und 304 als Status zurück erhalte, resultiert dies in keinem Unterschied. Der Partial-Content wird trotzdem geladen - wie gewollt (interessiert jQuery anscheinend nicht, Status ist allerdings gesetzt).
Rufe ich die Worflow-Seite nun direkt auf und erhalte u.a. den 304er Status, dann seh ich (im IE7) nur ne leere Seite, habe jedoch HTML-Content erhalten; wird nur nicht angezeigt.
Ich vermute ich muss ein wenig Zeit in Facebook stecken... 🙁
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code