html возвращается как xml при вызове webservice (asmx) в jquery - PullRequest
1 голос
/ 02 ноября 2011

У меня есть блок jquery, который делает некоторые вещи вроде Ajax:

    $.ajax({
    url: '/webservices/manager.asmx/addNew',
    type: "POST",
    dataType: "html",
    data: { id: Id, name: Name, dept: Dept, helpId: HelpId },
    success: function (data) {
        //append to the table
        $('#divManagers').append(data); 
    },
    error: function () {
        //console.log('error');
    }
});

Так что все проходит нормально, asmx получает данные, и я вычисляю материал, а затем, наконец, отвечаю примерно так:

<div id="divContainer">
         <h2>Manager Name</h2>
</div>

Теперь, несмотря на то, что мой dataType установлен на html, мой ответ заключен в строку xml:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">&lt;div id=divContainer&gt;&lt;/h4&gt;Manager&nbsp;Name&lt;/div&gt;</string>

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

Что происходит, пожалуйста?

РЕДАКТИРОВАТЬ

Я просто создаю HTML в моем asmx. что-то вроде

StringBuilder component = new StringBuilder();
component.appendFormat("<div id='divComponent'><h2>{0}</h2></div>', managerDataRow["ManagerName"].ToString());
return component.ToString();

Мой asmx - это отдельная правильная страница asmx, а не метод [webmethod] внутри обычной страницы aspx. Спасибо.


если есть какая-либо разница между моим фактическим выводом и возвращенным результатом здесь это потому, что я отредактировал его, чтобы сделать его коротким. спасибо.

Ответы [ 3 ]

4 голосов
/ 02 ноября 2011

вы можете создать объект jQuery из ответа и прочитать значение text оттуда, чтобы получить желаемый результат.

$('#divManagers').append($(data).text());

Кроме того, этот пост может ответить, почему вы не получаетеобратно прямой HTML в ответе

Как получить чистый / чистый HTML из вызова веб-службы ASMX

1 голос
/ 02 ноября 2011

Вам нужно установить webResponse ContentType в: "text/html"

РЕДАКТИРОВАНИЕ:

Но в любом случае вы можете вернуть JSON или XML и захватитьваши данные (XML с использованием xpath, JSON просто js-объект) и размещение вашего div на клиентском сайте (вы лучше контролируете то, что вы печатаете).Служба должна предоставлять только простые данные без каких-либо HTML-материалов.

0 голосов
/ 02 ноября 2011

Можете ли вы опубликовать код C # asmx, пожалуйста?

Возможно, вы установили ContentType в ответе так:

HttpContext.Current.Response.ContentType = "text/html";

Или убедитесь, что вы установили тип возврата. Например, мой сервис:

[WebService]
public class MySvc : WebService {

    [WebMethod (Description="Proxy for MyService")]
    public String Proxy()
    {return "<h1>MyHeader</h1>"}
}

Подробнее о SO с jQuery и ASMX:
Вызов ASMX из jQuery

...