Как получить чистый / чистый HTML из вызова веб-службы ASMX - PullRequest
0 голосов
/ 13 октября 2010

Я пытаюсь использовать jQuery .load (), чтобы получить прямой HTML-код из веб-службы asmx:

$ ( '# целевой') нагрузки ( 'MyService.asmx / GetHtml');.

В .NET-коде GetHtml () возвращается в виде строки:

    [WebMethod(EnableSession = false)]
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Xml)]
    public string GetHtml()
    {
        return "<span>Hi</span>";
    }

Возвращает:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">&lt;span&gt;Hi&lt;/span&gt;</string>

Обратите внимание, что строка закодирована. С этой кодировкой $ .load работает неправильно. Отображаемый текст на самом деле имеет отображаемые теги.

Как я могу получить вызов WebMethod для возврата только этого?

<span>Hi</span>

Ответы [ 4 ]

6 голосов
/ 13 октября 2010

Как насчет этого:

Вместо того, чтобы извлекать HTML из службы, потяните data , а затем используйте jquery для вставки этих данных в DOM.

Тогда вам не нужно будет XML декодировать ваш HTML.

4 голосов
/ 13 октября 2010

Я вполне уверен, что если вы хотите вернуть HTML обратно из службы, вам нужно использовать обработчик (.ashx), а не .asmx.Я не знаю, как заставить .asmx не кодировать ваши данные в каком-либо формате (хотя вы можете изменить этот формат).*

1 голос
/ 13 октября 2010

Краткий ответ (как предлагали другие авторы): не делайте этого.Верните JSON и используйте JS для его преобразования в нужный HTML. См. Это обсуждение для получения дополнительной информации / комментариев.

Однако, если у вас нет выбора, кроме как возвращать HTML (возможно, ваш проект mgr / architect боится настоящего дизайна веб-службы по некоторым причинам)Я согласен с ответом Джейка Т. здесь: используйте ajax для вызова страницы ASPX.

Вся цель ASPX в жизни - вернуть HTML (в отличие от ASMX или ASHX).Что наиболее важно, хорошо написанный ASPX отделяет HTML от логики / кода позади.Таким образом, когда вам нужно изменить HTML из списка на таблицу (или что-то еще), вы можете сделать это без перекомпиляции, повторного тестирования и повторного развертывания всей системы darn!:)

0 голосов
/ 13 октября 2010

Самый простой способ - вообще не использовать веб-сервис. HTTP-запрос с ответом, содержащим HTML, в основном является наиболее распространенной операцией, которая происходит в Интернете, поэтому для этого предназначены инструменты по умолчанию. В случае asp.net это будет файл aspx.

...