使用ajax,asp.net加载页面数据

时间:2011-01-12 13:39:47

标签: c# asp.net ajax web-services

我在我的网站上使用ajax从UserControl中调用一些名为NewsFeed.ascx的信息,该文件位于'controls'文件夹中,我的方法是创建一个 Web服务页面(在一个名为WebMethods的文件夹中),其中包含一个名为 GetRSSReader 的函数,它返回一个字符串格式:

    [WebMethod]
public string GetRSSReader()
{
    Page page = new Page();
    UserControl ctl =
      (UserControl)page.LoadControl("~/Controls/NewsFeed.ascx");

    page.Controls.Add(ctl);

    StringWriter writer = new StringWriter();
    HttpContext.Current.Server.Execute(page, writer, false);

    return writer.ToString();
}

然后我使用Jquery(我发现它太重了)来调用此页面以将返回的数据作为 JSON 获取,如下所示:

<div id="Content"></div>
<script type="text/javascript" defer="defer" src="../JAVA/Default.js"></script>
  

&GT;

$(document).ready(Update);

function Requests()
{
  $.ajax({
    type: "POST",
    url: "../WebMethods/Feed.asmx/GetRSSReader",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
      $('#Content').html(msg.d);
    }
  });
}

Jquery.js和此页面(default.js)建立在 Java

文件夹中

我的问题:还有什么比这种方式更好的。除此之外,当我有大量数据时,它不起作用,并且它不会读取网格视图工具。有什么建议 !? 10X


另一方面是否有网络服务的替代方案! (更快)

3 个答案:

答案 0 :(得分:1)

虽然有一些较低级别的方法来完成你正在做的事情会减少一些开销,但听起来你的问题是“大量数据”,而不是WebService的开销。

您是否返回了新闻Feed的全部内容?难道你不愿意只返回改变了什么?一些逻辑似乎就是答案......

此外,没有真正的理由使用Web服务来执行此操作。只需将UserControl放在常规页面(aspx)中,然后使用GET查询调用它。您还可以使用通用Web处理程序(ashx)而不是具有较低开销的WebService。但这听起来并不像这里的问题。无论哪种方式,您都不需要打扰JSON。您正在获取HTML,只需获取它,然后直接使用它。

此外,不是返回完全呈现的HTML(不知道你的UserControl做了什么,很难知道如何优化它),只需返回数据,并使用jQuery或其他东西来产生输出。如果您不想在jQuery中构建模板,那么您可以在服务器上呈现默认/空模板,并在客户端上使用它来构建数据。

当然,这将是一些工作,但如果数据量是瓶颈,那将有所帮助。

答案 1 :(得分:0)

通常,WCF比Web服务更新,更快,更好。

但是在你的情况下,我非常怀疑你需要其中任何一个..如果我理解你的要求,你可以使用UpdatePanel ...用UpdatePanel包裹控件并用客户端脚本触发它而不是调用你自己的AJAX请求。

UpdatePanel在幕后使用自己的AJAX机制,我猜它已经尽可能优化了。

答案 2 :(得分:0)

您可以使用ASP.NET Callback API,它非常轻量级,您也可以发送JSON。

无论如何,为什么你说你的方式效率不高?您是通过此Web服务发送大量数据吗?

也许你需要传呼。