1

問題は「aif.php」ファイルにあると思います」

PHPを使用して配列をフェッチして表示しようとしていますが<br>、次のスクリプトの結果にHTML要素が表示されています。HTMLタグをエスケープする必要があることはわかっていますが、方法がわかりません。また、このコードに関する他のアドバイスをいただければ幸いです(つまり、冗長性や改善すべき領域はありますか?ありがとうございます。

HTML

<DOCTYPE! html>
<html>
    <head>
        <title>The Auditors' Report: Data Entry</title>
        <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
        <header><h1>Work Station<h1></header>
        <div = id="leftnav">
        <h2>Select Action</h2>
        Name: <input type="text" id="name">
        <input type="submit" id="grab" Value="Grab">
        </div>
        <div id="content"></div>
        <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
        <script src="aif.js"></script>
        </body>
</html>

PHP-config(ファイル名: "config.php")

<?php
$dbhost = "localhost";
$dbname = "x";
$dbuser = "y";
$dbpass = "z";
$dsn = "mysql:host=$dbhost;dbname=$dbname";
$dbh = NULL
?>

PHP-クエリ/結果のコンテンツ(ファイル名: "aif.php")

<?php
require "config.php";
$dbh = new PDO($dsn, $dbuser, $dbpass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$sql = "SELECT * FROM table1 LIMIT 0,10";
$sth = $dbh->prepare($sql);
$sth->execute();
while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
    echo $row['field1'],"<br>";
    echo $row['field2'],"<br>";
    echo $row['field3'],"<br>";
}
?>

Javascript

$('input#grab').on('click', function() {
    var name = $('input#name').val();
    if ($.trim(name) !='') {
        $.post('aif.php', {name: name}, function(data) {
            $('div#content').text(data);
        });
    }
});
4

2 に答える 2

0

次のような行をhtmlエンコードする場合:

this is <br /> a test

このような行に:

this is &lt;br /&gt; a test

ここで説明する気の利いた小さな関数を使用してください: 入力フィールドから属性を読み取るとHTMLエンコーディングが失われます

于 2012-12-30T01:55:36.630 に答える
0

Javascriptで簡単なエラーを起こしました。TEXTではなくHTMLを返したかったのです。

次の変更により、PHPは適切にレンダリングされます。

$('div#content').text(data);

$('div#content').html(data);
于 2012-12-30T02:35:46.610 に答える