2010-11-11 4 views
0

Я возвращаю некоторые предварительно сформированные данные с сервера в виде строки. это передается на результаты ajax. По какой-то причине HTML только отображается в виде строки, а не ссылки и т.д.jquery ajax not rendering html

это то, что я хочу

<a href='#'>test</a> 

это то, что я получаю

&lt;a href='#'&gt;test&lt;/a&gt; 

Это мой код

function displayData(startRow, pageNumber) { 
     // there's a call to jQuery AJAX here 
     $.ajax({ 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      url: "default.aspx/GetPageLinks", 
      data: "{startRow: '" + startRow + "', pageNumber: '" + pageNumber + "'}", 
      dataType: "json", 
      success: function(msg) { 
       displayRoutes(msg.d); 
      } 
     }); 
     return false; 
    } 
    }); 

    function displayRoutes(results) { 
     $('#tradeRoutes').html(results);    
    } 

ответ

2

Вы на 100% уверены, что не прошли ответ на POST через этап кодирования рверовская сторона?

Обновление: т. Е. Сервер, возвращающий строку с вещественными угловыми скобками или возвращающую строку, полную закодированных угловых скобок?

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

Я бы использовал что-то вроде Fiddler (или Wireshark, или Firebug), чтобы проверить, каков фактический ответ сервера.

Также поместите вызов alert() в displayRoutes, чтобы увидеть, на что действительно установлены «результаты».

+0

Вы на 100% уверены, что не прошли ответ на POST через этап кодирования на стороне сервера? Я не совсем понимаю, что вы имеете в виду. Прости. Я использую asp.net HtmlTextWriter для создания ссылок html и т. Д.? Глядя на выход предупреждения, он отображает вышеупомянутую кодированную версию href. – hoakey

+1

@hoakey: Можете ли вы опубликовать определенную часть 'GetPageLinks', которая возвращает строковое представление ссылки в конец вашего вопроса для нас, пожалуйста? – Codesleuth

+0

@hoakey - Я попытался немного расшириться. Я не могу сказать из вашего комментария, что вы видите с бдительным - на мой взгляд, всевозможные возможности были «вышеупомянутыми»! –

2

Опираясь на Will Dean's answer, попробуйте следующее:

function decodeHtml(encodedHtml) { 
    return encodedHtml.replace(/&amp;/g,'&') 
     .replace(/&lt;/g,'<').replace(/&gt;/g,'>'); 
} 

function displayRoutes(results) { 
    $('#tradeRoutes').html(decodeHtml(results)); 
} 

Это из JQuery плагин эквивалент здесь: jQuery plugin - HTML decode and encode

По крайней мере, это должно получить ваш код работает, пока вы выяснить, что делает его сделать это.