将JavaScript移动到PHP中

时间:2012-06-06 17:48:57

标签: php javascript jquery mysql

我刚刚开始使用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 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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中使用双引号,你可以在里面使用单引号。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我不确定你究竟想要什么,但听起来你正在寻找'foreach'循环。当我想从结果集中填充一些东西时,我可以简单地使用:

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

foreach用于循环,但在后台执行所有逻辑。希望这会有所帮助。