2016-12-04 6 views
0

私はasp.netアプリケーションを使用していて、コールを使用しています。以下は私のコードです。下は、うまく動作しており、コールの応答を与える私のWebメソッドです。jsonでHTMLコンテンツをデコードする方法は?

ADController adc = new ADController(); 
     DataTable dt = adc.GetGeneral(Convert.ToInt32(AnnouncementId));// GetAnnouncementsByIDAndRead(Convert.ToInt32(AnnouncementId), Convert.ToInt32(userid)); 
     JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); 
     List<Dictionary<string, object>> parentRow = new List<Dictionary<string, object>>(); 
     Dictionary<string, object> childRow; 
     foreach (DataRow row in dt.Rows) 
     { 
      childRow = new Dictionary<string, object>(); 
      foreach (DataColumn col in dt.Columns) 
      { 
       if (col.ColumnName == "description") 
       { 
        childRow.Add(col.ColumnName, HttpUtility.HtmlDecode(Convert.ToString(row[col]))as object); 
       } 
       else 
       childRow.Add(col.ColumnName, row[col]); 
      } 
      parentRow.Add(childRow); 
     } 
     return jsSerializer.Serialize(parentRow); 

以下の罰金働いて、コール細かい上のデータを与えている私のAjaxコード、です。以下

function fnshowAncDetails(AnnouncementId, userid) { 
    $(".loading").show(); 
    var url = $("[id$='hdURLt']").val(); 
    $("[id$='btnSaveMD']").show(); 
    $.ajax({ 
     type: "POST", 
     url: url + "/GetInfo.aspx/General", 
     data: '{AnnouncementId:"' + AnnouncementId + '",userid:"' + userid + '"}', 
     contentType: "application/json; charset=utf-8", 
     //dataType: "json", 
     success: OnSuccessSetCGiven, 
     error: function (response) { 

     } 
    }); 
    var vtext = $("[id$='lblAnnoucement']").text(); 
    if (vtext != 0) { 
     vtext = vtext - 1; 
    } 
    $("[id$='lblAnnoucement']").text(vtext); 
} 

私の成功方法

function OnSuccessSetCGiven(response) { 
    var parsed = $.parseJSON(response.d); 

    $("[id$='htititlen']").text(parsed[0].Title); 
    $("[id$='divNotifBody']").text(parsed[0].Description); 


    $("[id$='divadded']").text("By:"+parsed[0].FirstName + " " + parsed[0].LastName); 
    $("#divNotifdetails").modal('show'); 
    $(".modal-backdrop").css('z-index', '0'); 
    $(".loading").hide(); 

    var formattedTime = parsed[0].stime.Hours + ":" + parsed[0].stime.Minutes; 
    //$("[id$='divtime']").text(formattedTime); 
    $("[id$='divdate']").text("Time:" +parsed[0].startdate + " " + formattedTime); 
} 

が今私の質問は、HTMLタグがあるかもしれない説明であるが、<p>xxx</p><b>sdf</b>のようなフォーマットされたHTMLSを意味します。だから大胆にロードされない、 どのように私はフォーマットされたHTMLをレンダリングできますか?

答えて

1

使用jQueryの.html機能はなく.text

function OnSuccessSetCGiven(response) { 
    ... 
    $("[id$='divNotifBody']").html(parsed[0].Description); 
    ... 
} 

しかし、あなたは説明フィールドにHTMLコードをきれいにし、不要な属性に&タグを削除する必要がありますので、あなたはJSインジェクションの脆弱性があることに注意してください(例: <script><any onclick="">など)

更新:

ところで、私はないです

$("[id$='divNotifBody']") 

理由だけではなく、使用しないで、あなたはID「divNotifBody」とdiv要素を選択すると仮定すると::この選択構文に精通し

$("#divNotifBody") 
+0

お返事ありがとうございます。しかし、上記はまだ機能していません。ちょうど私は試みました。他の解決方法がありますか? – result

+0

descriptionに有効なhtml文字列が含まれていると動作しない理由はありません。 jqueryの.htmlドキュメントを参照してください。http://api.jquery.com/html/#html-htmlString –

+1

@RonDadon '$(" [id $ = 'divNotifBody'] ")'は有効です 'はCSS3セレクタで終了しますhttps://www.w3.org/TR/css3-selectors/#attribute-substringsを参照してください。たとえば、次のような場合に役立ちます。この例では 'firstdivNotifBody'、' seconddivNotifBody' – Tyblitz

関連する問題