Como chamar um método via AJAX sem causar a renderização da página?
-
09-06-2019 - |
Pergunta
Estou trabalhando com ASP.net.
Estou tentando chamar um método que existe na classe base da página que estou usando.Quero chamar esse método via Javascript e não preciso que nenhuma renderização seja tratada pelo ASP.net.
Qual seria a maneira mais fácil de conseguir isso.
Examinei PageMethods que, por algum motivo, não estão funcionando e descobri que muitas outras pessoas tiveram problemas com eles.
Solução
Depende do que o método depende, mas supondo que seja um método estático ou que não dependa do ciclo de vida da página para funcionar, você pode expor um endpoint de serviço da web e acessá-lo com qualquer mecanismo de chamada Javascript que você gostaria de usar.
Outras dicas
Qual biblioteca você está usando para fazer chamadas Ajax?Se você estiver usando JQuery, poderá criar métodos estáticos e chamá-los em sua página.Deixe-me saber se você precisa de ajuda adicional!
Como sugere o Thunder3, exponha um serviço da Web.Depois de fazer isso, você pode registrar o webservice no ScriptManager (ou ScriptManagerProxy), o que fará com que um wrapper JavaScript seja gerado.Este wrapper oferece uma boa interface para a chamada.
Para estender o ponto levantado por @Azam, se não quiser renderizar o html na página, você pode definir o tipo de retorno para algo diferente, como xml, e fazer um response.write como fiz no código abaixo.Durante o GET, quero enviar de volta o HTML, mas durante o POST, envio de volta algum XML pela rede.
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