Ash*_*iya 7 php ajax prototypejs
我正在使用php/mysql和protype.js从表中删除记录.问题是数据库中的记录不会被删除.
index.php文件:
<a href="javascript: deleteId('<?php echo $studentVo->id?>')">Delete</a></td>
Run Code Online (Sandbox Code Playgroud)
脚本是
function deleteId(id)
{
alert("ID : "+id);
new Ajax.Request('delete.php?action=Delete&id='+id,{method:'post'});
$(id).remove(); // because <tr id='".$row[id]."'> :)
}
Run Code Online (Sandbox Code Playgroud)
delete.php
<?php
/* Database connection */
include('configuration.php');
echo "hello,...";
if(isset($_POST['id'])){
$ID = $_POST['id'];
$sql = 'DELETE FROM student where id="'.$ID.'"';
mysql_query($sql);
}
else { echo '0'; }
?>
Run Code Online (Sandbox Code Playgroud)
alert("ID : "+id); 工作正常,但之后的代码不是.
您正在使用来自JS的GET请求:
{method:'get'}
Run Code Online (Sandbox Code Playgroud)
并且您的PHP代码使用他认为以POST形式到达的数据:
$ID = $_POST['id'];
Run Code Online (Sandbox Code Playgroud)
你应该在两边使用相同的方法.
(在修改/删除数据时,您应该使用POST)
作为旁注,您应该在SQL查询中明确地转义/保护/检查您正在使用的数据,以避免SQL注入,例如,在使用整数时使用intval ; 如果使用字符串,则使用mysql_real_escape_string.
另一种方法是停止使用旧的mysql扩展,并开始使用mysli或PDO,这意味着你可以使用预准备语句(mysqli,pdo)
在评论之后编辑:你现在请求在POST中进行,需要更改参数的传递方式:它们不应再在URL中传递.
我想这样的事情应该有效:
var myAjax = new Ajax.Request(
'delete.php',
{
method: 'post',
parameters: {action: id}
});
Run Code Online (Sandbox Code Playgroud)
或者你也可以使用这样的东西,自己构建参数字符串:
var myAjax = new Ajax.Request(
'delete.php',
{
method: 'post',
parameters: 'action=' + id
});
Run Code Online (Sandbox Code Playgroud)
(未经测试,因此您可能需要更改一些内容;-))
有关更多信息,请查看Ajax.Request和Ajax选项 :-)
| 归档时间: |
|
| 查看次数: |
6738 次 |
| 最近记录: |