Wie ein Verfahren über AJAX-to-Call, ohne dass die Seite überhaupt zu machen?
-
09-06-2019 - |
Frage
Ich arbeite mit ASP.net.
Ich versuche, eine Methode aufzurufen, die für die Seite auf der Basisklasse existiert ich verwende. Ich mag diese Methode via Javascript anrufen und benötigen kein Rendering von ASP.net behandelt werden.
Was wäre der einfachste Weg, dies zu erreichen.
Ich habe bei Pagemethods sah, die aus irgendeinem Grund nicht funktioniert, und festgestellt, dass viele andere Menschen mit ihnen Probleme gehabt haben.
Lösung
Es hängt davon ab, was die Methode beruht auf, aber vorausgesetzt, es ist eine statische Methode ist, oder dass es nicht auf der Seite Lifecycle angewiesen zu arbeiten, könnten Sie einen Webservice-Endpunkt aussetzen und schlugen, dass mit je nachdem, was Javascript Mechanismus rufen Sie möchten verwenden.
Andere Tipps
Welche Bibliothek verwenden Sie Ajax Anrufe zu tätigen? Wenn Sie JQuery verwenden, dann können Sie statische Methoden erstellen und auf Ihrer Seite aufrufen. Lassen Sie uns wissen, wenn Sie weitere Hilfe benötigen!
Wie Thunder3 schlägt vor, setzen einen Web-Service. Sobald Sie dies getan haben, können Sie den Webservice mit dem Scriptmanager (oder Script) registrieren, die ein JavaScript-Wrapper erzeugt werden verursacht. Dieser Wrapper gibt Ihnen eine gute Schnittstelle zum Aufruf.
auf dem Punkt erweitern gemacht von @Azam , wenn Sie nicht die HTML-Datei auf der Seite machen wollen können Sie den Rückgabetyp auf etwas anderes wie xml gesetzt und eine response.write tun, wie ich in dem folgenden Code haben. Während der GET möchte ich die html zurück zu senden, aber während des POST senden ich einige XML über den Draht zurück.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Response.Cache.SetCacheability(HttpCacheability.NoCache)
If Request.HttpMethod = "GET" Then
'do some work and return the rendered html
ElseIf Request.HttpMethod = "POST" Then
'do some work and return xml
Response.ContentType = "text/xml"
Response.Write("<data></data>")
Response.End()
Else
Response.StatusCode = 404
Response.End()
End If
End Sub