¿Cómo llamar a un método a través de AJAX sin que la página se muestre en absoluto?

StackOverflow https://stackoverflow.com/questions/67621

  •  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.

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top