Ajax将javascript变量传递给javascript函数作为参数
我的数据库中有三张表:Person (id, name, last_name), System (id, name), PersonInSystem(id, person_id, system_id)
。最后一个用于链接一个人与一个系统。Ajax将javascript变量传递给javascript函数作为参数
我用<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,也不想将数据发送到其他页面。
另外我想更新系统分配的页面(应该显示同一个人)。
更改代码如下。 它应该工作
<img src="drop.gif" onclick="deleteSystem('<?php echo $systemAssignedToPerson;?>')">
你deleteSystem JavaScript函数需要以下类型的请求发送给服务器:
(例如:对于取消分配处理程序文件)
"unassign.php?systemId=459&personId=300"
(例如:通用处理程序文件)
"handler.php?systemId=459&personId=300&action=unassign"
In 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" */
改进: *使用像原型(旧校园,重量轻)或jQuery的(更重)JavaScript库来处理Ajax的东西 *使用$ _ POST和POST变量,而不是$ _GET *使用库为正确引用您的SQL *护理有关HTML特殊字符和正确输入验证/过滤
我想你需要本地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');
}
我想给你一个答案,但我已经找到代码中的一些基本问题。你在你的'PHP' while循环中输出一个静态'id':''。所以你的html将是无效的(每个id只能出现一次),你的javascript无法区分你隐藏字段的不同值(因为它们都有相同的“id”)。 – 2014-09-03 18:17:02