¿Cómo llamar a un método a través de AJAX sin que la página se muestre en absoluto?
-
09-06-2019 - |
Pregunta
Estoy trabajando con ASP.net.
Estoy intentando llamar a un método que existe en la clase base de la página que estoy usando.Quiero llamar a este método a través de Javascript y no necesito que ASP.net maneje ninguna representación.
¿Cuál sería la forma más fácil de lograr esto?
Miré PageMethods que, por alguna razón, no funcionan y descubrí que muchas otras personas han tenido problemas con ellos.
Solución
Depende de en qué se basa el método, pero suponiendo que sea un método estático o que no dependa del ciclo de vida de la página para funcionar, puede exponer un punto final de servicio web y ejecutarlo con cualquier mecanismo de llamada de Javascript que desee utilizar.
Otros consejos
¿Qué biblioteca estás usando para realizar llamadas Ajax?Si está utilizando JQuery, puede crear métodos estáticos y llamarlos en su página.¡Déjame saber si necesitas más ayuda!
Como sugiere Thunder3, exponga un servicio web.Una vez que haya hecho esto, puede registrar el servicio web con ScriptManager (o ScriptManagerProxy), lo que provocará que se genere un contenedor de JavaScript.Este contenedor le brinda una buena interfaz para la llamada.
Para ampliar el punto planteado por @azam, si no desea representar el html en la página, puede establecer el tipo de retorno en otra cosa, como xml, y escribir una respuesta como la que tengo en el código siguiente.Durante el GET quiero devolver el html, pero durante el POST envío algo de XML por cable.
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