1

我刚开始使用 PHP,我正在尝试将一些 jQuery ajax 移动到 PHP 中。这是我的 PHP 文件:

<?php
include 'config.php';
include 'opendb.php';

$query = "SELECT * FROM agency ORDER BY name";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)){
$id = $row['id'];
$name = $row['name'];
echo "<li class=\"agency\"><a href=\"contentAgency.php?id=$id\">$name</a><ul class=\"agency-sub\"></ul></li>";
}

include 'closedb.php';
?>

这是我当前的 js 函数:

//Add Agency content
$("ul.top-level").on("click", "li.agency a", function (event) {
    if($(this).next().length) {
        var numbs = $(this).attr("href").match(/id=([0-9]+)/)[1];
        showContentAgency(numbs, this);
    } else {
        $(this).closest('ul').find('a').removeClass('sub-active');
    }
    event.preventDefault();
});

这里是 showContentAgency(); 功能:

function showContentAgency(id, elem) {
    $.post("assets/includes/contentAgency.php?id=id", {
        id: id
    }, function (data) {
        $(elem).addClass("nav-active").parent().find("ul").html(data).show();
    });
}

我想做的是让 PHP 呈现无序列表,而不是让 jQuery 插入它。这就是它目前在上述 PHP 文件中的特色:

echo "<li class=\"agency\"><a href=\"contentAgency.php?id=$id\">$name</a><ul class=\"agency-sub\"></ul></li>"

所以我希望 PHP 填充<ul class="agency-sub">列表。

4

4 回答 4

0

php不能像jquery一样访问页面的dom。如果您想使用 Php 访问 DOM,则必须解析整个网页,这对于您想要做的事情来说可能是不切实际的。php只能在浏览器加载之前修改页面。如果要在页面加载后运行代码,则必须使用 javascript。

如果您发布更多代码,我们可能会为您提供更多帮助,因为我们目前不知道该页面的代码是什么样的。

于 2012-06-06T17:55:31.080 回答
0

这是列表中的列表吗?

顺便说一下,您可以编写如下的 php 代码,它更具可读性

<?php
include 'config.php';
include 'opendb.php';

$query = "SELECT * FROM agency ORDER BY name";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)){
$id = $row['id'];
$name = $row['name'];
echo "<li class='agency'><a href='contentAgency.php?id=$id'>$name</a><ul class='agency-sub'></ul></li>";
}

include 'closedb.php';
?>

如果你在 echo 中使用双引号,你可以在里面使用单引号。

于 2012-06-06T17:59:10.777 回答
0

你的代码结构对我来说有点不清楚,但大致的轮廓是这样的:你在 contentAgency.php 中获取任何生成内容的函数并调用它来获取 HTML,然后在构建时将其粘贴在里面名单。

于 2012-06-06T18:15:04.147 回答
0

我不确定您到底想要什么,但听起来您正在寻找“foreach”循环。当我想从结果集中填充内容列表时,我可以简单地使用:

<ul>
<? foreach($result as $object) ?>  
     <li><?=$object?></li>
<? endforeach; ?>
</ul>

foreach 执行一个 for 循环,但在后台执行所有逻辑。希望这可以帮助。

于 2012-06-06T19:51:41.790 回答