如何将javascript变量传递给Ajax脚本

How do I pass javascript variable to Ajax script?

本文关键字:Ajax 脚本 变量 javascript      更新时间:2023-09-26

在一个html按钮中,我有一个onclick事件:

onclick='javascript:updateStatus(59)'

然后我有这个功能

function updateStatus(){
   $.ajax({
    type: 'post',
    url: '/update-status.php',
    success: function(data){
        // callback function
    }
});
    return false; 
}

这是update-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变量中。

实现这一目标的最佳/适当方式是什么?

经过多次谷歌搜索后,发现函数中使用了"data",对不起。

由于您使用的是JQueryAJAX函数,只需在配置对象中使用另一个参数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'];