我從jsonp調用返回json數據。數據恢復正常。一個數據元素的形式是一個字符串,其中包含一些html(「p」標籤,「a」標籤)。我試圖在jQuery對話框中輸出這個元素(圖片描述)。出於某種原因,我無法將它呈現爲html,無論是否使用$ .parseHTML。jquery parseHTML按預期方式工作
代碼片斷:
var image = data.image;
var title = data.title;
var id = data.id;
var description = $.parseHTML(data.description);
var media = data.media;
var secret = data.secret;
if(media == "photo"){
var string = "<div id=\"picturebox\" class=\"picturebox\">\n";
string += " <img src=\""+image + "\" id=\"photo_"+id+"\" />\n";
string += " <h2>" + title + "</h2>\n";
string += " <p>" + description + "</p>\n";
string += "</div>\n";
$('#gbFullPic').html(string);
}
雖然動態產生格設置正確地顯示,包括圖像和標題,「說明」線路輸出這樣的: [對象文本]
如果刪除了$ .parseHTML輸出看起來是這樣的:
Bird of paradise growing in south Florida.<p><a href="http://www.popgnology.com/guestbook.php">ACME Adventures</a></p>
這將是好的,當然,如果我的HTML輸出並沒有表現出實際的HTMLŧ AGS。我究竟做錯了什麼?
更新(第2版): 我以前的解決方案是不完整的。問題比單個jQuery或JavaScript解決方案更復雜。
問題在服務器端開始,有嚴重的形成是通過
header('content-type: application/json; charset=utf-8');
echo $cid . '('.json_encode($data).')';
發送在服務器端(PHP)HTML,我不得不調理我的「說明」項,像這樣(注意加htmlspecialchars_decode和一個和addslashes包裝):
if($k == "description"){ $data["$k"] = addslashes(htmlspecialchars_decode($v)); } else{ $data["$k"] = $v; }
然後,這段JavaScript正確呈現JSON數據項:
var description = data.description.replace('\\','');
隨着校正服務器頁面上的傳遞格式,以及使用在客戶端側上的剝離.replace斜線的兩個步驟的過程中,「說明」可以正確地顯示在所有文本和html元素html頁面。
感謝大聲呵呵,稍微擺弄一下,我將你的原理應用於我的問題,現在它可以工作。我將編輯我的問題以顯示新代碼。 – TARKUS 2013-04-30 00:13:50