test.php
читает базу данных и подготавливает ее в формате JSON.затем test.html
вызовите данные и отобразите их в таблице.
test.php
.
<?php
$conn = new mysqli("localhost", "root", "xxxx", "guestbook");
$stmt = $conn->prepare('SELECT title, content, author, email, ip FROM lyb where title="test"');
$stmt->execute();
$stmt->bind_result($title, $content, $author, $email, $ip);
$result = [];
while ($stmt->fetch()) {
$result[] = [
'title' => $title,
'content' => $content,
'author' => $author,
'email' => $email,
'ip' => $ip
];
}
header('Content-type: application/json; charset=utf-8');
echo json_encode($result);
?>
Теперь для проверки test.php
с php -f test.php
.
[{"title":"test","content":"<p><img alt=\"\" src=\"upfiles\/54591303758197437.jpg\" \/><\/p>","author":"me","email":"me@tom.com","ip":"111.111.111.111"}]
Обратите внимание: значение содержимого содержит HTML-теги, я хочу показать его на веб-странице.
test.html
обратный вызов файла test.php
и отображение данных на веб-странице.
<h2 align="center">Ajax show data in table</h2>
<table border="2">
<tbody id="disp">
<th>title</th>
<th>content</th>
<th>author</th>
<th>email</th>
<th>ip</th>
</tbody>
</table>
<script>
$(function(){
$.getJSON("test.php", function(data) {
$.each(data,function(i,item){
var tr = "<tr><td>" + item.title + "</td>" +
"<td>" + item.content + "</td>" +
"<td>" + item.author + "</td>" +
"<td>" + item.email + "</td>" +
"<td>" + item.ip + "</td></tr>"
$("#disp").append(tr);
});
});
});
</script>
Что я получаю, как показано ниже:
<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre class="snippet-code-html lang-html prettyprint-override"><code><h2 align="center">Ajax show data in table</h2>
<table border="2">
<tbody id="disp">
<th>title</th>
<th>content</th>
<th>author</th>
<th>email</th>
<th>ip</th>
<tr>
<td>test</td>
<td></td>
<td>me</td>
<td>me@tom.com</td>
<td>111.111.111.111</td>
</tr>
</tbody>
</table>
Введите 127.0.0.1/test.html
, все теги и значения содержимого <p><img alt=\"\" src=\"upfiles\/54591303758197437.jpg\" \/><\/p>"
потерян.
Как отобразить содержимое <p><img alt="" src="upfiles/54591303758197437.jpg" /></p>"
, не содержащее escape-символа \
, вместо его потери и вместо строксодержащий символ перехода \
?
Я ожидаю показать как показано ниже:
<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre class="snippet-code-html lang-html prettyprint-override"><code><h2 align="center">Ajax show data in table</h2>
<table border="2">
<tbody id="disp">
<th>title</th>
<th>content</th>
<th>author</th>
<th>email</th>
<th>ip</th>
<tr>
<td>test</td>
<td><p><img alt="" src="upfiles/54591303758197437.jpg" /></p></td>
<td>me</td>
<td>me@tom.com</td>
<td>111.111.111.111</td>
</tr>
</tbody>
</table>