2010-08-08 30 views
1

我正在使用jHTMLArea編輯器,並且遇到了使用來自json數組對象的html填充textarea控件的問題。所有html元素都包含正向和反向斜線,<tr \/>。例如,txtOrganization是接受html的textarea控件,但是當我運行下面的代碼時,控件是空白的。如何解析來自JSON數組的HTML

下面還有一個從服務返回的json數組樣例。如果我這樣手動輸入數據:

$("#txtByline").val('<P>Testess<\/P>\r\n<P>&nbsp;<\/P>'); 

一切正常。

function LoadForm(PublicationID) { 
    /* 
     $("#txtByline").val('');*/ 
     PublicationID = 41; 
     var ajaxOpts = { 
      type: "post", 
      url: "../JSONService.php?Method=GetPublication&PublicationID=" + PublicationID + "", 
      data: "", 
      success: function (data) { 
       var dataObject = eval('(' + data + ')'); 
       var opt; 
       for (var a = 0; a < dataObject.length; a++) { 
        var item = dataObject[a]; 
        $("#txtTitle").val(item.Title); 
        $("#txtSubTitle").val(item.SubTitle); 
        $("#selType").val(item.Type); 
        $("#txtDate").val(item.DateTime); 
        $("#txtContactName").val(item.ContactName); 
        $("#txtContactPhone").val(item.ContactPhone); 
        $("#txtContactEmail").val(item.ContactEmail); 
        $("#txtOrganizationTitle").val(item.OrganizationHTML); 
        $("#txtByline").val(item.Byline); 
        $("#txtBody").val(item.Body); 
        $("#txtClosingBody").val(item.BodyClosing); 
        $("#txtQuote").val(item.Quote); 
        $("#txtDescription").val(item.Description); 
        $("#txtFootnote").val(item.FootNote); 
       } 
      } 
     } 



([{"Type":"About","Year":"2010","DateTime":"08\/07\/2010","ContactName":"test","ContactPhone":"test","ContactEmail":"test","OrganizationHTML":"<P><A href=\"http:\/\/www.iup.edu\">Orrick<\/A><\/P>","Title":"test","SubTitle":"test","Byline":"<P>Testess<\/P>\r\n<P>&nbsp;<\/P>","Body":"<H1>sdfsdfsdfsdfsd<\/H1>\r\n<H1>dfgdfgdfgdf<\/H1>\r\n<H1>dfgdfgdfdfgdf<\/H1>","BodyClosing":"<UL>\r\n<LI>fghgfhgf<\/LI><\/UL>","Quote":"<P align=center>dfgdfgdfgdf<\/P>","Description":"test","FootNote":"test","IsActive":null,"RegionID":"0","PageID":"0","ID":"41","FileID":null,"FileText":null,"FileUrl":null,"ImageID":null,"ImageCaption":null,"ImagePath":null,"KeyWordID":null,"KeyWords":null,"LinkID":null,"LinkUrl":null,"LinkText":null}]) 

http://jhtmlarea.codeplex.com/

+0

是否有一個原因,您沒有使用您的請求上的JSON數據類型? – prodigitalson 2010-08-08 03:23:55

+0

與實際問題無關:您正在覆蓋每個循環上的#txt'元素的值,以使它們最終具有最後一次迭代的值。這真的是你想要的嗎? – BalusC 2010-08-08 03:35:22

回答

2

你必須告訴jHtmlArea自我更新您設置底層textarea的值之後:

$("#txtOrganizationTitle").val(item.OrganizationHTML).htmlarea('updateHtmlArea'); 

迴應您的評論:

jHtmlArea沒有很好的文檔(除非您在Visual Studio中使用intellisense以及jHtmlArea's vsdoc file。)但它的code不太難以通讀。它遵循大多數jQuery插件所做的相同模式,所以我能夠找出它們提供的方法,updateHtmlArea就是其中之一。

+0

@Brianpeirls ....非常感謝你....你怎麼知道的? – 2010-08-08 17:11:42

+1

不客氣,布蘭登。我已經編輯了我的答案並回復了您的評論 – brianpeiris 2010-08-08 22:52:02

0

試試這個:

function LoadForm(PublicationID) { 
     PublicationID = 41; 
     var ajaxOpts = { 
      type: "post", 
      dataType: 'JSON', 
      url: "../JSONService.php?Method=GetPublication&PublicationID=" + PublicationID + "", 
      data: "", 
      success: function (dataObject) { 
       var opt; 
       jQuery.each(dataObject, function(i,item){ 
        $("#txtTitle").val(item.Title); 
        $("#txtSubTitle").val(item.SubTitle); 
        $("#selType").val(item.Type); 
        $("#txtDate").val(item.DateTime); 
        $("#txtContactName").val(item.ContactName); 
        $("#txtContactPhone").val(item.ContactPhone); 
        $("#txtContactEmail").val(item.ContactEmail); 
        $("#txtOrganizationTitle").val(item.OrganizationHTML); 
        $("#txtByline").val(item.Byline); 
        $("#txtBody").val(item.Body); 
        $("#txtClosingBody").val(item.BodyClosing); 
        $("#txtQuote").val(item.Quote); 
        $("#txtDescription").val(item.Description); 
        $("#txtFootnote").val(item.FootNote); 
       }); 
      } 
     }; 

}