如何将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变量中。

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

+0

第一步是为你的'updateStatus'函数添加一个参数:'function updateStatus(requestId)'' – forgivenson

想出更多的使用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'];