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将它插入到 a中:

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

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

于 2013-01-07T03:34:15.333 回答
1

您在 php 中创建 JSON,并且json在需要 html 时无缘无故地使用 dataType。

只需在 php 中输出 html 字符串并dataType:'json从 AJAX 中删除。

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 回答