2016-05-12 75 views
-1

在一個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

回答

0

想出更多的使用google搜索功能之後使用「數據」,抱歉。

0

由於您使用的是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 
0

首先,拿在參數傳遞您的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']; 
相關問題