2013-08-07 64 views
5

Tôi có một số PHP xuất ra json.HTML đầu ra trong chuỗi JSON được tạo bởi PHP

<?php 
$html = utf8_encode($gegevens['tekst']); 
$html = htmlentities($html); 
//$html = htmlspecialchars($gegevens['tekst'], ENT_QUOTES, 'UTF-8'); 
echo json_encode(array('titel' => $gegevens['titel'], 'html' => $html)); 
?> 

Kết quả sẽ như thế nào:

{"titel":"Here comes the title","html":"<strong>Here is the HTML<\/strong>\n<br \/>\n<br \/>\n  And some more."} 

Và jQuery/Ajax sẽ là:

$.ajax({ 
          type: "GET", 
          url: "content/popup.php?id=" + id2, 
          dataType: 'json', 
          crossDomain: true, 
          success: function(json) { 
          var titel = json['titel']; 
          var html = json['html']; 


function ContentTonen() 
{ 
           // Div's legen van content 
$('.popup_home_head_inside').empty(); 
$('.popup_home_content_inside').empty(); 

$('.popup_home_head_inside').html(titel); 
var html2 = html.replace(/\"/g, ""); 
//$('.popup_home_content_inside').html(html2); 
$('.popup_home_content_inside').html(html2); 

Và đầu ra HTML là:

<strong>Some HTML</strong> <br /> Some more text. 

Vì vậy, nó sẽ không xử lý dưới dạng HTML.

Bạn có thể giúp tôi không?

Trả lời

5

Bạn không cần phải thoát khỏi html với htmlentities ở phía máy chủ.

Xóa $html = htmlentities($html); khỏi tệp php của bạn.

Lý do: htmlentities sẽ chuyển đổi

<strong>Some HTML</strong> <br /> Some more text. 

để

&lt;strong&gt;Some HTML&lt;/strong&gt; &lt;br /&gt; Some more text. 

mà khi bao gồm trong html sẽ hiển thị:

<strong>Some HTML</strong> <br /> Some more text. 
+1

Làm thế nào để chuẩn bị html cho JSON sau đó? Stripslashes không hoạt động. – Daan

+0

Bạn có ý nghĩa gì? – Jithesh

+0

Khi tôi chèn HTML trực tiếp vào JsonEncode, nó trả về giá trị rỗng. Bởi vì nó không phải là JSON hợp lệ. Với htmlentities JsonEncode chấp nhận chuỗi là JSON hợp lệ. Nhưng tôi nên sử dụng chức năng nào để chuẩn bị HTML thành JSON hợp lệ? – Daan

Các vấn đề liên quan