Wie erkennen/verfolgen/überprüfen Postback in Javascript (z. B. in asp.net Page.isPostBack())? Irgendwelche Vorschläge?Wie kann Postback in Javascript erkannt/verfolgt werden?
Antwort
ASPX:
<input type="hidden" id="_ispostback" value="<%=Page.IsPostBack.ToString()%>" />
Client-seitiges Script:
function isPostBack() { //function to check if page is a postback-ed one
return document.getElementById('_ispostback').value == 'True';
}
PS: Ich habe es nicht getestet, aber ich habe getan somthing ähnlich vor und es funktioniert.
Als eine Angelegenheit oder Vorliebe füge ich runat = "server" zu der versteckten Eingabe hinzu und ändere ihren Wert in der Codebehind-Datei, aber das funktioniert gut. Und ich würde jQuery empfehlen, das Javascript zu machen, denn das würde bedeuten: function isPostBack() {return $ ("#_ ispostback"). Val() == 'true';} –
@Shhnap: Ja stimme ich zu. Nur ein fauler Ausweg für mich: P –
Warum stören Einfügen eines '' Elements? Sie könnten einfach haben, dass isPostBack() direkt den Wert von Page.IsPostBack zurückgibt: 'return <% = Page.IsPostBack%>;' – RickNZ
Sie können das Postback nur verfolgen, wenn Sie AJAX-Anfragen verwenden oder ein verstecktes Feld irgendeiner Art haben, die das Javascript beim Laden der Seite liest. Andernfalls wird die Seite neu generiert und alle POST-Daten gehen verloren. wie Sie es erwarten und hoffen.
Siehe folgende:
<script type="text/javascript">
function invokeMeMaster() {
var chkPostBack = '<%= Page.IsPostBack ? "true" : "false" %>';
if (chkPostBack == 'false') {
alert('Only the first time');
}
}
window.onload = function() { invokeMeMaster(); };
</script>
Wenn Sie prüfen möchten, ob die aktuelle Seite ein Postback sein wird, wenn der Benutzer auf eine Schaltfläche zum Senden klickt, können Sie auf das Vorhandensein von Viewstate überprüfen:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="xxxxx" />
Sie können etwas wie document.getElementById("__VIEWSTATE")
oder das jQuery-Äquivalent verwenden.
Wenn Sie jedoch sehen möchten, ob die aktuelle Seite als Antwort auf ein Postback generiert wurde, müssen Sie diese Daten zuerst in die Seite auf der Serverseite einfügen.
Zum Beispiel:
function isPostBack() {
return <%= Page.IsPostBack %>;
}
Da gehen Sie. +1 :) –
Dies fällt, wenn Sie keinen Zugriff auf serverseitigen Code haben und Codeblöcke nicht erlaubt sind. –
Merkwürdig ist, dass das nicht für mich arbeiten, aber dies tut: \t \t \t Funktion IsPostBack() { \t \t \t \t var ret = '<% = Page.IsPostBack%>' == 'True'; \t \t \t \t retour ret; \t \t \t} – Zeek
In einigen Fällen können Sie für Postbacks ohne serverseitigen Code überprüfen möchten. Beispielsweise können Sie in SharePoint keine Codeblöcke in SharePoint Designer-Seiten haben, sodass Sie keine Lösung verwenden können, die % = etwas%> erfordert. Hier ist eine Alternative, die keine serverseitigen Code beinhaltet:
<script type="text/javascript">
function isPostBack()
{
return document.referrer.indexOf(document.location.href) > -1;
}
if (isPostBack()){
document.write('<span style="color:red;">Your search returned no results.</span><br/>');
}
</script>
Eine Einschränkung (oder Funktion, je nachdem, wie man es betrachtet), wird dies erkennen nicht nur Postbacks, aber jeder Fall, in dem die Seite Links zu sich selbst .
Da JavaScript sollte nicht mit serverseitigen Code geschrieben werden, und neue Elemente in der Seite Injektion scheint übertrieben, so scheint es mir, dass die einfachste Lösung [datat-*]
Attribute zum <head>
Elemente hinzuzufügen ist:
Page.Header.Attributes["data-is-postback"] IsPostBack ? "true" : "false";
Dies kann dann als zugegriffen werden
$('head').data('isPostback');
Vanille JS: document.head.getAttribute('data-is-postback') === 'true';
Natürlich, wenn Sie das [data-is-postback]
Attribut als Boolesche Attribut behandeln, können Sie alternativ verwenden:
if (IsPostBack)
{
Page.Header.Attributes.Add("data-is-postback", "");
}
else
{
Page.Header.Attributes.Remove("data-is-postback");
}
jQuery: $('head').is('[data-is-postback]');
Vanille JS: document.head.hasAttribute('data-is-postback')
Das ist zwar großartig, wenn Sie auf den serverseitigen Code zugreifen, fällt jedoch nicht. Einige Software erlaubt nicht einmal Code-Blöcke, so dass eine reine JavaScript-Lösung benötigt wird. –
Hier Lösung jQuery:
$("a[href^='javascript:__doPostBack']").click(function() {
alert('ok');
});
Ich habe eine Lösung, die für mich gearbeitet.
// Postback catch
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function (s, e) {
alert("post back");
});
es funktioniert nur für Ajax async Anfragen – devi
auf Page_Load auf Ihrer Server-Seite: Im Folgenden verwendet eine Überlastung der Registerclient(), die unsere Zeichenfolge mit den benötigten Script-Tags
Server-Side
if (Page.IsPostBack){
ClientScript.RegisterClientScriptBlock(GetType(),
"IsPostBack", "var isPostBack = true;", true);
}
Dann umgeben wird Überprüfen Sie in Ihrem Skript, das für onLoad ausgeführt wird, ob diese Variable vorhanden ist.
if (isPostBack){
//do something here
}
Verwendung bodyonloadfunc Postback auf Client-Seite zu überprüfen
function bodyonloadfunc() {
alert("Postback");
}
Betrachten Sie eine erweiterte Antwort. – Sam
@Sam bodonloadfunc ist eine Javascript-Funktion, die es aufruft, wenn die Seite Postback ist. –
- 1. Postback Javascript
- 2. Wie vermeidet man ein Postback in JavaScript?
- 3. Partieller Postback mit Javascript
- 4. asp.net mvc Javascript Postback
- 5. Wie gefälschte Postback mit Javascript generieren?
- 6. asp.net Postback und Javascript/jquery
- 7. Kann eine PartialView ohne ein Postback erneut gerendert werden?
- 8. Kann sich eine URL beim Postback ändern?
- 9. Kann JavaScript überstrapaziert werden?
- 10. Kann Felder nach einem Postback nicht zurücksetzen
- 11. Wie kann ein Perl-Webcrawler einem ASP.NET-Postback folgen?
- 12. Button ohne Postback?
- 13. Call-Funktion von Code hinter in Javascript ohne Postback
- 14. Kann die Maske einer RadMaskedTextBox über Javascript geändert werden?
- 15. Wie Postback in verschachtelten Benutzersteuerelementen zu simulieren?
- 16. Wie Variable Persist auf Postback
- 17. Kann JavaScript-Dateisystem in Inkognito verwendet werden?
- 18. Jquery Postback, gleiche Registerkarte nach Postback
- 19. Cross Postback in asp.net
- 20. Wie kann der Name des Konstruktors in JavaScript abgerufen werden?
- 21. Wie kann JavaScript-Funktion in ActionScript 3 geändert werden?
- 22. Wie kann JavaScript in einer lokalen Datei gespeichert werden?
- 23. Wie funktioniert Robotreplay? Kann es in PHP/Javascript kodiert werden?
- 24. Wie kann JavaScript in eine öffentlich zugängliche Website einbezogen werden?
- 25. ASP.Net Links werden nicht deaktiviert, wenn während Postback getan
- 26. Jquery Tabs Postback Problem
- 27. Trigger serverseitige E-Mail von JavaScript ohne Postback
- 28. ASP.NET CheckBox Zustand und PostBack
- 29. Postback-Problem mit HtmlEditorExtender
- 30. Ereignis wird nicht ausgelöst, wenn Javascript zum Postback verwendet wird
Was verstehen Sie unter "Spur" verstehen? –