2012-06-06 40 views
1

我剛剛開始使用PHP,並試圖將一些jQuery ajax移動到PHP中。這是我的PHP文件:將JavaScript移動到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">列表。

+0

這是有點不清楚你在問什麼。如果您希望您的PHP腳本在發送之前填充UL,只需讓它執行此操作即可。有什麼麻煩?你想讓PHP動態地填充它以後什麼? – Chuck

+0

的確如此,我想讓PHP填充列表。但我是如此新的PHP我不確定如何填充列表中的列表?我設法在js中完成它,但我不知道如何在PHP中執行此操作。 – Yahreen

回答

0

你的代碼的結構對我來說有點不清楚,但是大致的概要是這樣的:你在contentAgency.php中生成內容的任何函數,然後調用它來獲取HTML,然後將它粘在裏面正在建立清單。

0

Php無法像Jquery那樣訪問頁面的DOM。如果你想用Php訪問DOM,你將不得不解析整個網頁,這對你想做的事情可能不切實際。 PHP只能在頁面被瀏覽器加載之前修改頁面。如果你想在頁面加載後運行代碼,你必須使用JavaScript。

如果您發佈了更多代碼,我們可能會幫助您更多,因爲我們目前不知道網頁的代碼是什麼樣子。

+0

我不需要它來訪問DOM。我只是試圖讓無序列表在發送頁面之前填充UL。我已經設法在js中做到這一點,但我想將其切換到PHP。 – Yahreen

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'; 
?> 

如果你是在呼應就可以使用裏面的單引號使用雙引號。

+0

是的,我試圖填充列表中的列表。但是,而不是使用JavaScript,我想用PHP來做。謝謝你的提示,順便說一句。 – Yahreen

0

我不確定你到底想要什麼,但它聽起來像你正在尋找'foreach'循環。當我想從我設置簡單的使用結果填充的東西列表:

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

的foreach起到一個循環,但這樣做的所有邏輯背景。希望這可以幫助。