2

试图通过 JSON 为 ajax 网站输出 html php。

php:

$return = "<div id='content'><ul class='allitems'>";
while($row = mysql_fetch_array($result)){
    $return .= "<li class='items'>" . "<div class='itemheading'><div  class='controls'> <span class='votes'>" . $row['votes'] . "</span>";
    $return .= "<form class='actions' action='index.php' method='POST'><input type='hidden' name='id' value='{$row['id']}'/><input type='submit' class='button plus' value='+1' /></form>";
    $return .= "<form class='actions' action='index.php' method='POST'><input type='hidden' name='id-' value='{$row['id']}'/><input type='submit' class='button minus' value='-1' /></form>  ";
    $return .= "<form class='actions' action='index.php' method='POST'><input type='hidden' name='idDel' value='{$row['id']}'/><input type='submit' class='button delete' value='X' /></form>  ";
    $return .= "</div><span class='title'>" . $row['name'] . "</span></div><span class='infotext'>". $row['infotext'] ."</span></li>";
}
$return .= "</ul></div>";
echo json_encode($return);

如果您访问此 php 页面,则输出中到处都有斜杠 ( \/),例如。<\/span><\/form> <\/div>Make the app look all nice<\/span>并且不输出为常规 html。

这是将显示 putput 的 ajaxpage 的代码:

    <script id="source" language="javascript" type="text/javascript">

  $(function () {
    $.ajax({url: 'retrieve.php', dataType: 'json'}).done(function(data) {


            var html = data[3];

            $('#output')
                .append("<b>id: </b>"+html)


    });
});
  </script>

问题在于它<何时输出等var html = rows[0]; d[1]一次只显示 1 个字符。

如何一次性查看所有 html 并作为实际的 html 代码?

4

2 回答 2

1

JSON以类似数组的方式返回东西(我也是新的,所以我不确定)所以你必须让所有的html成为数组中的一个对象。下面我将它设置为在关联数组中使用“html”进行引用。

在 php 页面上将这个改成echo json_encode($return);这个 echo json_encode(array('html' => $return));

在 ajax 页面上,您只需要稍微更改它。

代替:

var html = data[3];

                $('#output')
                    .append("<b>id: </b>"+html)

和:

var html = data['html'];

            $('#content')
                .append(html)

或者为了让它更整洁,你甚至不必为 html 创建一个变量,你可以直接从 JSON 数组中获取它:

        $('#content')
            .append(data['html'])
于 2012-07-16T12:44:04.160 回答
0

您不必为此使用 JSON;只需在 jQuery 中使用 .load() 即可将 HTML 片段直接加载到元素中。

$("#output").load("retrieve.php");
于 2012-07-16T13:05:14.307 回答