在有人说“尝试搜索”之前,我有 - 我意识到这可能是一个简单的解决方案,但我无法让它发挥作用。这是我第一次进入AJAX - 我对javascript的了解略高于一年级学生......我知道我需要加快速度。
我正在尝试使用AJAX构建嵌套的任务管理器。我正在加入AJAX实现...否则列表工作正常。基本概念应输出如下:
里程碑:建立基本设置 - 完成2/11/12
任务:设计数据库 - 完成2/11/12
任务:设计php的东西 - 完成2/11/12
里程碑:Add the finesse
当您单击该链接时,它会运行我的MySQL更新以显示正在完成的项目。我有三个嵌套的while循环(一个用于目标,一个用于里程碑,一个用于任务)。它们几乎相同。这是嵌套最深的循环:
$query_tasks = mysql_query("SELECT * FROM task WHERE task_gid = '$task_gid' AND task_mid = '$task_mid' AND task_tid IS NOT NULL");
$t_numrows = mysql_num_rows($query_tasks);
if($t_numrows > 0){
while( $get_task = mysql_fetch_array($query_tasks)){
$task_id = $get_task['task_id'];
$task_goal = $get_task['task_goal'];
$task_due = $task_task['task_due'];
$task_due = date("m/d/Y", $task_due);
$task_complete = $get_task['task_complete'];
$task_complete_date = $get_task['task_complete_date']; ?>
以下是我触发查询的链接:
<a id="link" href="#"><?=$task_goal?> by <?=$task_due?> </a>
}
这是我的ajax查询:
<script type="text/javascript">
$('#link').click(function(){
$.ajax({
type: "GET",
url: "complete.php?id=<?=$task_id?>"
});
return false;
});
</script>
我已经让它为一个链接工作(如果我点击最后一个渲染的链接,它按预期工作 - 但没有其他链接吗)。我已经尝试在头部调用javascript(我的首选方法),并在每次循环通过时调用它(不确定这是一个好主意,但无论如何)。我的想法是在javascript函数中为每个任务使用while循环中的变量。我已经尝试将ajax脚本放入javascript函数并在链接的onClick行为上调用它,但没有运气。想法?
答案 0 :(得分:4)
这是你应该怎么做的: http://pastebin.com/ZMCzAS5H
通过在链接中设置自定义属性(task_id),您可以稍后在ajax请求中检索它。这样,您将为所有链接使用一个事件绑定器,而不是每个链接使用一个。
答案 1 :(得分:1)
对同一文档中的多个元素使用相同的ID并不是一个好主意; ID应该是唯一的。请改用类,然后尝试
<a class="link" href="#"><?=$task_goal?> by <?=$task_due?> </a>
和
<script type="text/javascript">
$('.link').click(function(){
$.ajax({
type: "GET",
url: "complete.php?id=<?=$task_id?>"
});
return false;
});
</script>
答案 2 :(得分:0)
JavaScript和PHP不进行交互。 PHP是一个“预处理器”,基本上生成HTML(在此上下文中)。您不能在JavaScript中使用PHP变量。周期。
生成HTML时,将task_id添加到锚点
echo "<a class=\"link\" href=\"#\" rel=\"". $task_id ."\">". $task_goal ." by ". $task_due . " </a>";
(不使用link
的ID,但使用类)
然后在jQuery中:
$('.link').click(function(e){
e.preventDefault(); // use this instead of return false;
task_id = $(this).attr('rel');
$.ajax({
type: "GET",
url: "complete.php?id="+ task_id
});
});
“我已经让它为一个链接工作(如果我点击最后一个渲染的链接,它可以按照需要工作 - 但没有其他链接可以)”
这可能是因为您已经使用了一个ID作为锚点,并且您只能在页面上使用一次ID。您必须使用class