0

このPHPのビットを使用して、htmlのチャンクを返しています。

if ($action = "update")
    {

        connect_db();

        $query = mysql_query("SELECT * FROM convo ORDER BY date ASC") or die (mysql_error());

        while($row = mysql_fetch_array($query))
        {
            $output = $output . '<p>';
            $output = $output . '<b>From:</b> ' .$row['from'];
            $output = $output . ' <b>To:</b> ' .$row['to'];
            $output = $output . ' <b>Message:</b> ' .$row['content'];
            $output = $output . "<br />";
            $output = $output . '</p>';
        }

        //htmlentities($output);

        header('Content-Type: application/json');
        echo json_encode( $output );
    }

<div>そして、このビットの jQuery でそれを に挿入します。

function update(){

        $.ajax({
            type: "GET",
            url: "actions.php",
            data: {  
                'action': 'update'
                },
            dataType: "json",
            success: function(data)
            {
                console.log('update called');
                console.log( data);
                $('#history').text( data );

                //$('#status').text('sent!');
            }
        });             

        setTimeout(update, 5000);
    }   

ajax呼び出しは機能し、正しいhtmlを返しますが、挿入するとフォーマットされていないため、ブラウザーにすべてのhtmlコードが表示されます。例の写真を参照してください:ブラウザ出力

以外のものを使用する必要があり.textますか?

4

2 に答える 2

1

PHP で JSON を作成し、jsonhtml が必要なときに理由もなく dataType を使用しています。

php で html 文字列を出力し、dataType:'jsonAJAX から を削除するだけです。

echo  $output ;

次に、メソッドを使用して挿入しhtml()ます

 $('#history').html( data );

このload()方法は、あなたのケースに最適です。$.ajaxショートカット方法です。持っているすべての AJAX を次のように置き換えることができます。

 $('#history').load("actions.php", { 'action': 'update'},function(){
     console.log('new content inserted now')
 })

API リファレンス: http://api.jquery.com/load/

于 2013-01-07T03:35:48.373 に答える
1

$('#history').text( data );に変更$('#history').html( data );

于 2013-01-07T03:34:15.333 に答える