我正在使用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);
答案 0 :(得分:2)
像这样编码html似乎在每个/之前添加一个\ 要破解的HTML
PHP is escaping the slashes while encoding。通过在调用JSON_UNESCAPED_SLASHES
时添加json_encode()
标志可以防止这种情况:
$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);
答案 1 :(得分:0)
将错误包装为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)
});