【问题标题】:How to use an asp.net web service for refreshing only small part of asp.net 4.0 web page without editing any other part如何使用 asp.net web 服务只刷新 asp.net 4.0 网页的一小部分而不编辑任何其他部分
【发布时间】:2011-11-20 13:21:35
【问题描述】:

我知道如何编写 Web 服务,但直到现在我还是将它们与随时可用的脚本一起使用。这次我想做的是,有一个网络服务会返回一个字符串,我想在网页的一部分显示这个字符串。该部分可能在更新面板内,也可能不在更新面板内。我知道如何使用 jquery。所以我的问题是如何每 5 秒调用一次网络服务并使用网络服务的结果更新网页的一部分。此更新不应中断页面的任何部分,也不会导致回发。

我该怎么做?

asp.net 4.0 , c# 4.0

【问题讨论】:

    标签: javascript jquery asp.net web-services


    【解决方案1】:

    如果您的页面已经在使用更新面板,那么您可以重用 ms ajax 库,而根本不需要 jquery 库。

    javascript:

      function GetMyString() {
       // Call a static page method to get your string
       PageMethods.GetMyStringWebMethod(OnSucceeded, OnFailed);
    

    }

     function OnSucceeded(result, userContext, methodName) {
        $get('yourDivContainer').innerHTML = '<b>' + result + '</b>';
       setTimeout("GetMyString()", 5000); 
        }
    
    
    function OnFailed(error, userContext, methodName) { }
    
    function pageLoad() {
          // On initial load and partial postbacks, 
       GetMyString();
    

    }

    你代码后面的页面方法:

        [WebMethod]
        public static string GetMyStringWebMethod()
        {
    
            return "the string";
        }
    

    aspx:

    将 asp:ScriptManager 更改为 EnablePageMethods="true"

    如果您对使用 jquery 感到满意,那么只需将 Pagemethods 调用替换为 jquery.Ajax 调用,将 GetMyStringWebMethod.aspx 作为 url 传递并处理 ajax 成功事件中的字符串插入。

    【讨论】:

    • 感谢您的出色回答。但这失败了: PageMethods.GetMyStringWebMethod(OnSucceeded, OnFailed);我只用我自己的类替换了 PageMethods,但它失败了。我如何在课堂上调用网络服务?
    • 你需要将EnablePageMethods="true"添加到
    • 然后调用“PageMethods.YourMethodName” - 确保“YourMethodName”是页面代码隐藏中的静态方法并且它具有“[WebMethod]”属性
    【解决方案2】:

    AJAX 是您正在寻找的 :)

    This 是一个很好的入门指南。

    【讨论】:

      【解决方案3】:

      您不能仅使用 C# 执行此操作 - 这具有重要的客户端部分,因此您需要使用 javascript。

      您可以使用 AJAX 轮询 Web 服务并更新页面的一部分。使用 setTimeoutsetInterval 每 5 秒重复一次呼叫。

      查看jQuery.ajax API。

      【讨论】:

        【解决方案4】:

        您可以在 Javascript 中使用window.setInterval 来持续轮询网络服务。

        setInterval(function() {
          // call the webservice and update the page with its response
        }, 5000);
        

        要使用 jQuery 调用 web 服务,您可以使用 ajaxget 函数:

        $.ajax(
          url: ...
          data: ... input data
          success: function(response) { /* update your page with the response */ },
          error: function() { /* don't forget to treat errors */ }
        );
        

        现在,更新页面取决于您得到的响应类型。假设你有一个简单的字符串(或 HTML 字符串)要放在 div 元素中,你可以这样做:

        // this is your success handler
        $('#myDiv').html(response);
        

        【讨论】:

        • 这就是我要的部分。在那个函数里面
        猜你喜欢
        • 1970-01-01
        • 2014-12-23
        • 1970-01-01
        • 1970-01-01
        • 2016-06-10
        • 1970-01-01
        • 1970-01-01
        • 2013-01-08
        • 1970-01-01
        相关资源
        最近更新 更多