在PHP中的两个ajax调用之间传递变量

时间:2013-05-21 13:22:24

标签: php ajax jquery

我正在创建一个个人网站来帮助项目环境中的任务管理。

我有一个包含以下字段的mySQL表(tblProjects); id,ownerID,projectName和createdDate。然后我得到另一个包含以下字段的表(tblToDos); id,projectId(链接到tblProjects中的id)toDoName,toDoDueDate,createdDate。

这个想法是很多待办事项都属于一个项目。

目前,当网站加载时,我正在使用ajax和jQuery来显示项目列表。当我单击列表中的一个项目时,我希望能够运行另一个ajax Query来将该项目中的待办事项加载到同一页面上的单独div中(类似于您在gmail中单击电子邮件时的示例) ,电子邮件内容加载在右侧)

我的问题的关键在于我不知道如何将项目的ID从我的第一个Ajax请求传递到第二个,这样我就可以返回与点击的项目相关的待办事项。

2 个答案:

答案 0 :(得分:3)

您可以将每个项目与其ID相关联,即假设每个项目都有一个按钮:

<input type="button" value="Show TODOs for this project" onclick="showTodos(1)">

其中“1”是您项目的ID。

然后,在showTodos()函数中,你可以得到类似的东西:

function showTodos(projectId) {
  $.ajax({
     type: "GET",
     url: "/todos.php?id=" + projectId,
     success: function (json) {
       // Construct the div here
     }
  });
}

答案 1 :(得分:1)

为什么不将tblProject.id存储在您用于click事件的元素的属性(data-id)中,然后通过以下内容访问它:

    var projectId = $(this).attr( "data-id" );

如果您通过.load加载内容(假设您将此div赋予类“box”),则第二个参数接受数据数组,以便您可以通过:

    $( ".box" ).load( 'myPHPscript.php',  { "projectId" : projectId } );

您将能够使用以下命令访问php脚本中传递的变量:

    if( isset( $_POST['projectId'] ) ){
        $project_id = $_POST['projectId'];
    }