繁体   English   中英

如何在PHP中使用JSON编码HTML?

[英]How do I JSON Encode HTML in PHP?

我正在使用AJAX和PHP创建帖子并立即显示。 我的php代码可以创建帖子,但是我在执行json编码以显示刚刚创建的帖子时遇到了麻烦。 像这样对html进行编码似乎在/之前添加一个\\,导致html中断并以一种奇怪的方式显示。 (我使用的是json编码,因为在发生错误的情况下,我需要一个变量来知道这是否是错误,并将错误显示在与张贴不同的位置)

这是我想要编码的

$data = "<article class='post'><div class='post-head cf'>
         <a class='userpic' href=''><img src='$userpic' alt='".$rowuser['username']."'></a>
         <a href='' class='username'>".$rowuser['username']."</a></div>
         <img src='users/user_".$rowuser['user_id']."/posts/".$row['image']."' alt=''>
         <div class='post-body'>
         <div class='post-options'>
         <a class='likes' href=''>156 likes</a>
         </div>
         <p><a class='username' href=''>".$rowuser['username']."</a>".$row['body']."</p>
         <hr /><div class='cf'>
         <a class='like hide-text' href='javascript:;'>Like This Post</a>
         <form action='' class='comment'>
         <input type='text' placeholder='Add a comment'></form></div>
         </div></article>";

echo json_encode($data);

像这样对html进行编码似乎在/之前添加一个\\,导致html中断

PHP在编码时转义了斜线 这可以通过在调用json_encode()时添加JSON_UNESCAPED_SLASHES标志来防止:

$data = "<html></html>";

$escaped = json_encode($data);
// string(16) ""<html><\/html>""
var_dump($escaped);

$unescaped = json_encode($data, JSON_UNESCAPED_SLASHES);
// string(15) ""<html></html>""
var_dump($unescaped);

将错误作为字符串包装到json中: response.php

{
<?php If(someerror){ ?>
error:"<html>yourhtml</html>",
 <?php } ?>
}

现在您可以执行以下操作:

$.ajax("response.php",function(data){
   data=JSON.parse(data);
   if(data.error){
      $("#error").append(data.error);
      return;
   }
    //work with the obj (data)
   });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM