0

我想单击列表中的一个元素,该元素将填充另一个列表并将我带到它;第二个列表需要使用 AJAX 和 PHP 从 mySQL 数据库加载。我想知道以下方法是否可行,或者是否存在更好的方法。

HTML:

<a onClick=loadContent(this.value) value=Section1 href="#!/Section1">Section 1</a>

<li id=output></li>

Javascript:

function loadContent(section)
{
      .
      .
     if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
       document.getElementById("output").innerHTML=xmlhttp.responseText;
     }
xmlhttp.open("GET","getContent.php?q="+section,true);
xmlhttp.send()
}

PHP:

<?php
   $q=$_GET["q"];

   //connecting and creating query etc.

   while($row = mysql_fetch_array($result))
   {
      print "\t" . '<li id=". $q ."><a href="#!/"'  . $row['subsection'] .'>' . $row['subsection'] . '</a></li>';
   }
   ?>

那么 PHP 会在 HTML 中的 href 抓取它之前创建该部分吗?

4

1 回答 1

1

不,那是行不通的,因为 Ajax 是异步的。Ajax 调用将被触发,但会在返回结果之前立即完成,因此它会尝试在插入内容之前loadContent()转到。#!/Section1

可以做的是在 Ajax 完成后(在 readyState 部分)移动到锚点,使用:

window.location.hash = '#!/Section1';
于 2013-06-06T06:53:09.437 回答