загрузка данных страницы с помощью ajax, asp.net - PullRequest
0 голосов
/ 12 января 2011

Я использую ajax на своем веб-сайте для вызова некоторой информации из UserControl под названием NewsFeed.ascx, которая находится в папке 'controls' , мой способ - создать веб-сервис *Страница 1004 * (в папке с именем 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>

>

$(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 ]

1 голос
/ 12 января 2011

Хотя, безусловно, есть способы более низкого уровня для выполнения того, что вы делаете, которые позволили бы сократить некоторые накладные расходы, похоже, что ваша проблема - это «огромный объем данных», а не накладные расходы веб-службы.

Возвращаете ли вы все содержимое новостной ленты? Не лучше ли просто вернуть то, что изменилось? Какая-то логика, казалось бы, ответ ...

Кроме того, нет реальной причины использовать веб-сервис для этого. Просто поместите UserControl на обычную страницу (aspx) и вызовите его с помощью запроса GET. Вы также можете использовать универсальный веб-обработчик (ashx) вместо WebService с меньшими накладными расходами. Но опять же не похоже, что это действительно проблема здесь. В любом случае вам не нужно беспокоиться о JSON. Вы получаете HTML, просто получите его и используйте его напрямую.

Кроме того, вместо того, чтобы возвращать полностью визуализированный HTML (не зная, что делает ваш UserControl, сложно знать, как это оптимизировать), просто возвращайте данные и используйте jQuery или что-то еще для вывода. Если вы не хотите создавать свой шаблон в jQuery, вы можете отобразить шаблон по умолчанию / пустой на сервере и использовать его на клиенте для компоновки с данными.

Конечно, это будет какая-то работа, но если объем данных является узким местом, это поможет.

0 голосов
/ 12 января 2011

Вы можете использовать ASP.NET Callback API, который является очень легковесным, и вы также можете отправлять JSON.

В любом случае, почему вы говорите, что ваш путь неэффективен?Вы отправляете много данных через этот веб-сервис?

Может быть, вам нужно подкачки.

0 голосов
/ 12 января 2011

В общем, WCF новее, быстрее и лучше, чем веб-сервисы.

Однако в вашем случае я сильно сомневаюсь, что вам нужен какой-либо из этих ... если я понимаю ваши требования, вы можете использовать UpdatePanel для этого.. оберните элемент управления с помощью UpdatePanel и запустите его с помощью сценария на стороне клиента, вместо того, чтобы вызывать свой собственный AJAX-запрос.

UpdatePanel использует собственный механизм AJAX за кулисами, и я думаю, что он так же оптимизирован, какуже возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...