페이지를 전혀 렌더링하지 않고 AJAX를 통해 메소드를 호출하는 방법은 무엇입니까?

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

  •  09-06-2019
  •  | 
  •  

문제

저는 ASP.net으로 작업하고 있습니다.

사용 중인 페이지의 기본 클래스에 있는 메서드를 호출하려고 합니다.Javascript를 통해 이 메서드를 호출하고 ASP.net에서 렌더링을 처리할 필요가 없습니다.

이를 달성하는 가장 쉬운 방법은 무엇입니까?

나는 어떤 이유로 작동하지 않는 PageMethods를 살펴보았고 다른 많은 사람들이 문제를 겪고 있음을 발견했습니다.

도움이 되었습니까?

해결책

메소드가 무엇에 의존하는지에 따라 다르지만, 그것이 정적 메소드이거나 작동하기 위해 페이지 수명주기에 의존하지 않는다고 가정하면 웹 서비스 엔드포인트를 노출하고 사용하려는 Javascript 호출 메커니즘을 사용하여 이를 실행할 수 있습니다.

다른 팁

Ajax 호출을 위해 어떤 라이브러리를 사용하고 있습니까?JQuery를 사용하는 경우 정적 메서드를 만들고 페이지에서 호출할 수 있습니다.추가 도움이 필요하면 알려주세요!

Thunder3가 제안한 대로 웹 서비스를 노출하십시오.이 작업을 완료한 후에는 ScriptManager(또는 ScriptManagerProxy)를 사용하여 웹 서비스를 등록하면 JavaScript 래퍼가 생성됩니다.이 래퍼는 호출에 대한 좋은 인터페이스를 제공합니다.

다음의 요점을 확장하려면 @아잠, 페이지에서 HTML을 렌더링하지 않으려면 반환 유형을 xml과 같은 다른 것으로 설정하고 아래 코드에서와 같이 response.write를 수행할 수 있습니다.GET 중에는 HTML을 다시 보내고 싶지만 POST 중에는 유선을 통해 일부 XML을 다시 보냅니다.

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top