如何通过AJAX调用方法而不导致页面完全呈现?

时间:2020-03-05 18:54:42  来源:igfitidea点击:

我正在使用ASP.net。
我正在尝试为我正在使用的页面调用基类上存在的方法。我想通过Javascript调用此方法,并且不需要ASP.net处理任何呈现。
什么是最简单的方法来做到这一点。
我查看了由于某种原因无法使用的PageMethods,发现很多其他人在使用它们时遇到了麻烦。

解决方案

回答

它取决于该方法所依赖的内容,但是如果假定它是静态方法或者不依赖Page Lifecycle来工作,则可以公开一个Web服务终结点并使用我们希望使用的任何Javascript调用机制来实现该终结点。

回答

我们正在使用哪个库进行Ajax调用?如果使用的是JQuery,则可以创建静态方法并在页面上调用它们。让我知道我们是否需要进一步的帮助!

回答

正如Thunder3建议的那样,公开一个Web服务。完成此操作后,可以向ScriptManager(或者ScriptManagerProxy)注册Web服务,这将导致生成JavaScript包装器。该包装器为我们提供了良好的呼叫接口。

回答

为了扩展@Azam提出的观点,如果我们不想在页面上呈现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