如何将JavaScript变量传递给Ajax脚本?
问题描述:
在一个HTML按钮,我有这样的onclick事件:如何将JavaScript变量传递给Ajax脚本?
onclick='javascript:updateStatus(59)'
然后,我有这个功能
function updateStatus(){
$.ajax({
type: 'post',
url: '/update-status.php',
success: function(data){
// callback function
}
});
return false;
}
这是更新status.php
$sql = "UPDATE requests SET status='Closed' WHERE requestid=$requestid";
$updatestatus = mysqli_query($con, $sql);
if (!$updatestatus) {
die("Database query failed: " . mysqli_error($con));
} else {
return "success!";
}
最后,我想来自原始onclick事件的数字(在本例中它是59,但可以是任何数字)传递到update-status.php中的$ requestid变量中。
什么是最好/正确的方法来实现这一目标?
答
想出更多的使用google搜索功能之后使用“数据”,抱歉。
答
由于您使用的是JQuery AJAX功能,只需使用配置对象data
中的另一个参数即可。您也错过了该函数的一个参数。
function updateStatus(i){
$.ajax({
type: 'post',
data: 'requestid='+i,
url: '/update-status.php',
success: function(data){
// callback function
}
});
return false;
}
您还可以创建一个映射和发送地图,像这样
...
data: {"requestid" : i},
...
你的服务器端代码应该更新虽然。你不想在没有首先消毒的情况下使用客户的输入。这就打开了SQL注入攻击的威胁。
例如,如果将requestId的值是什么
1 or '1'='1' --
或
1; drop table requests
答
首先,拿在参数传递您的javascript函数,并将其发送给你这样的PHP脚本:
function updateStatus(id){
$.ajax({
type: 'post',
url: '/update-status.php',
data: {id: id},
success: function(data){
}
});
return false;
}
在您的PHP访问它通过$_POST['id']
。但是,请确保您避免使用SQL注入攻击的价值。
$requestid = $_POST['id'];
第一步是为你的'updateStatus'函数添加一个参数:'function updateStatus(requestId)'' – forgivenson