繁体   English   中英

将PHP变量从while循环传递到javascript函数

[英]Pass PHP variable from while loop to javascript function

在有人说“尝试搜索”之前,我已经-我意识到这可能是一个简单的解决方案,但我无法使其正常工作。 这是我第一次涉足AJAX-我对javascript的了解略高于一年级生...我知道我需要加快速度。

我正在尝试使用AJAX构建嵌套的任务管理器。 我陷入了AJAX实施的麻烦。 基本概念应如下所示:

目标: 创建嵌套任务列表

里程碑:建立基本设置-12年2月11日完成

任务:设计数据库-已完成2/11/12
任务:设计php内容-12/11/2完成

里程碑: 增加技巧

任务: 包括AJAX功能
任务: 包括CSS

当您单击链接时,它将运行我的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(不确定这是一个好主意,但无论如何)。 我的想法是为JavaScript函数中的每个任务使用while循环中的变量。 我尝试将ajax脚本放到javascript函数中,并在链接的onClick行为上调用它,但是没有运气。 思考?

这是您应该如何做: http : //pastebin.com/ZMCzAS5H

通过为链接设置自定义属性(task_id),您稍后可以在ajax请求中检索它。 这样,您将为所有链接使用一个事件绑定程序,而不是为每个链接使用一个事件绑定程序。

对同一文档中的多个元素使用相同的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>

JavaScript和PHP不相互作用。 PHP是一个“预处理程序”,并且基本上生成HTML(在这种情况下)。 您不能在JavaScript中使用PHP变量。 期。

生成HTML时,将task_id添加到锚点

echo "<a class=\"link\" href=\"#\" rel=\"". $task_id ."\">". $task_goal ." by ". $task_due . " </a>";

不要将ID用于link ,而应使用类

然后在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM