我试图摆脱JSON代码中的双引号和反斜杠,但似乎无济于事。显然我在这里做错了。有人会这样把我指向正确的方向吗?
这是我的PHP代码的一部分,其中包含要返回的HTML。如您所见,我尝试转义然后发送它,并在通过json_encode()发送之前删除反斜杠。分别和一起尝试了它们。我是双重编码还是什么?预先感谢。
if($stmt->rowCount() > 0){
$response = "";
foreach($returnSmt as $row){
$response .= '<div class=\"col-sm-8 col-sm-offset-2\">
<div class=\"panel panel-default panelFullLink\">
<a href=\"topic.php?id='.$row['topic_id'].'\" class="fullClickLink\"></div></div>';
}
//Here is the code that I tried in a few ways to get rid of the slashes and double quotes
$response = preg_replace("@[\\r|\\n|\\t]+@", "", $response);
$response = stripslashes($response);
$response = trim($response);
echo str_replace('\/','/', json_encode($response, JSON_UNESCAPED_SLASHES));
}
如果需要,这是我的AJAX函数,用于处理JSON代码。
$.ajax({
method: "POST",
url: "sortResults.php",
data: {
infiniteScrollData: 1,
start: start,
limit: limit
},
dataType: "json",
cache: false,
success: function(response){
if(response == "reachedMax")
reachedMax = true;
else{
start += limit;
$("#rowDisplayResults").append(response);
}
}
});
答案 0 :(得分:2)
从AJAX和PHP来看,您似乎只是将整个响应的HTML附加到文档中的某个位置。所以说真的,您根本不必担心反斜杠。
if($stmt->rowCount() > 0){
$response = '';
foreach($returnSmt as $row){
$response .= '<div class="col-sm-8 col-sm-offset-2">
<div class="panel panel-default panelFullLink">
<a href="topic.php?id='.$row['topic_id'].'" class="fullClickLink"></div></div>';
}
// No need to JSON encode it, just echo your HTML:
echo $response;
}
然后,您的AJAX保持原样。
答案 1 :(得分:0)
只需删除反斜杠,因为它们没有用,因为您用简单的引号对字符串进行了引用。
另外,请考虑使用addslashes函数来轻松转义稍后将解释的字符串。