У меня есть веб-сервис, из которого я должен возвратить строку, содержащую HTML. Этот HTML является разметкой для Избранного управления (для использования в фильтрах поиска jqGrid), например.
<select><option id='1'> value 1 </option></select>
Мой веб-сервис WCF содержит метод, который возвращает это значение как строку...
public string GetLeadTypeSelect()
{
return "<select><option id='1'> value 1 </option></select>";
}
и контракт для этого метода:
[OperationContract]
[WebInvoke(Method = "GET",
BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Json)]
string GetLeadTypeSelect();
Моя проблема состоит в том, что символы ESC вставляются в строку, настолько представляющую возвращенный бесполезный HTML - сервис возвращает это:
"<select><option id='1'> value 1 <\/option><\/select>"
Кавычки и завершенное '/'
в закрытии <option>
и <select>
теги обе проблемы причины.
jqGrid использует возвращенный HTML для отображения выпадающего...
filterModel: [
{ label: 'Type', name: 'type', stype: 'select', surl: '../../../Services/Leads/GetLeads.svc/GetLeadTypeSelect' },
Так, мой вопрос, как я возвращаю чистый HTML назад клиенту от этого веб-сервиса так, чтобы он мог быть вставлен в мою страницу HTML?
Заранее спасибо за любую справку, Colin.
Полагаю, вы используете его через Javascript.
Если вы делаете unescape(response), ваша проблема должна быть решена.
С другой стороны, если вы не используете его на Javascript, а только на ASP.NET / PHP / каком бы сайте вы не находились, вероятно, лучше просто вернуть массив значений и отобразить значения, чтобы вы могли повторно использовать веб-сервис в другом коде.
Ваш код теперь работает только в HTML среде. Что, если Вам нужно написать .NET / C++ / какое бы приложение завтра не использовало Ваш веб-сервис? Тогда Вам нужно будет изменить его. И дело не в веб-сервисах. Веб-сервисы способствуют многократному использованию кода. И вы боретесь с этим. (и код выиграет!)