繁体   English   中英

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

[英]How do I pass javascript variable to Ajax script?

在 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 变量中。

实现这一目标的最佳/正确方法是什么?

经过更多的谷歌搜索,想出在函数中使用“数据”,抱歉。

由于您使用的是 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'];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM