Ajax将php变量传递给javascript函数作为参数

时间:2014-09-03 16:37:03

标签: javascript php jquery ajax

我的数据库中有三个表:Person (id, name, last_name), System (id, name), PersonInSystem(id, person_id, system_id)。最后一个用于将人与系统链接。

我使用<select>来显示我的数据库中的每个人

echo '<option value="'.$queryResult["id"].'">'.$queryResult["name"].' '.$queryResult["last_name].'</option>';

我使用Ajax获取id并发送查询SELECT * FROM Person WHERE id = ID_FROM_SELECT。然后,我显示这样的数据(我不能复制代码,所以我必须从头重写它,我将使用伪PHP + HTML),其主要目的是编辑一个选定的人:

<form>
Name: <input type="text" value="'.$nameFromDB.'" name="name">
Last name: <input type="text" value="'.$lastNameFromDB.'" name="lastname">
System: while () { // if one person is assigned to many systems, I will display them all in separate selects
            <select><option value="'.$systemAssignedToPerson.'">'.$systemAssignedToPerson.'</option>
            while () {
            // display every system except for the one listed above
            }
            </select><img src="drop.gif" onclick="deleteSystem(document.getElementById(\"system\").value)"><input type="hidden" id="system" value="'.$systemAssignedToPerson.'"> 
        }

<input type-"submit" value="Edit" name="editPerson">
</form>

现在,如果我想取消给定系统中的某个人,我想点击drop.gif图像并触发deleteSystem(value)函数,它将发送查询DELETE FROM PersonInSystem WHERE system_id = SYSTEM_ID_SENT and person_id = PERSON_ID_SENT,但我无法通过价值,我不知道该怎么做(我是Ajax的新手)。

我可以将人的id存储在会话变量中,但我不知道如何发送系统ID,而且我也不想将数据发送到另一个页面。

此外,我想刷新更改系统分配的页面(应显示同一个人)。

3 个答案:

答案 0 :(得分:3)

我认为您需要向服务器调用本机javascript函数

function deleteSystem(value){  
    var deleteflag=confirm("Are you sure to delete?!!");
      if(deleteflag){
        //setup your request to the server
         window.location='delete.php?SYSTEM_ID_SENT='+value

       }

    } 

在delete.php文件中,您可以通过这种方式获取SYSTEM_ID_SENT

 $id=$_GET['SYSTEM_ID_SENT'];
 $personid=$_SESSION['your session variable name'];
// run your delete query
 $delqry=mysql_query("");
 if($delqry){
      //redirect to the page you want
      header('location:yourpage.php');
  }

答案 1 :(得分:1)

更改代码如下。 它应该工作

<img src="drop.gif" onclick="deleteSystem('<?php echo $systemAssignedToPerson;?>')">

答案 2 :(得分:1)

您的deleteSystem JavaScript函数需要向服务器发送以下类型的请求:

(示例:取消分配的处理程序文件)

"unassign.php?systemId=459&personId=300"

(示例:通用处理程序文件)

"handler.php?systemId=459&personId=300&action=unassign"

在unassign.php中:

$systemId = $_GET["systemID"];
$personId = $_GET["personID"];
/* Your SQL stuff here - 
statement something like 
DELETE FROM PersonInSystem WHERE person_id = "$personId" AND system_id = "$systemId" */

改进: *使用像Prototype(oldschool,轻量级)或jQuery(更重)的javascript库来处理Ajax的东西 *使用$ _POST并发布变量而不是$ _GET *使用库来正确引用您的SQL *关心html特殊字符和正确的输入验证/过滤