[英]updating a column in database using jQuery Ajax in codeigniter
我的數據庫中有一個Views列。 當單擊超鏈接訪問特定頁面時,我想用+1更新該列。 我正在使用jQuery,Ajax和codeigniter。 我無法做正確的事來觸發數據庫中的更新。 請協助我解決丟失的內容。
以下是我的代碼:
的HTML
<a href="<?php echo base_url(); ?>site/details/<?php echo $value->hid; ?>" name="hid" id="clicker">
JS
$(document).ready(function(){
$("a#clicker").click(function(){
$.ajax({
type: "POST",
url: "<?php base_url(); ?>site/traffic",
success: function(data){
alert("I got a view");
console.log(data);
}
});
});
});
控制者
public function traffic(){
$id = $this->input->post("hid");
$this->My_model->updateView($id);
}
模型
public function updateView($id = NULL, $data){
$this->db->set('view', 'view+1');
$this->db->where('id', $id);
$this->db->update($this->table, $data);
}
您即將解決您的問題。
首先,在您的JQuery Ajax代碼中,我看不到data參數,該參數設置要發送的Post數據。 在您的情況下,您需要將“ hid”參數發送到PHP腳本,因此您必須通過以下方式進行指定:
<a href="<?php echo base_url(); ?>site/details/<?php echo $value->hid; ?>" name="hid" id="clicker" data-hid="<?php echo $value->hid; ?>">
請注意,我已將“ hid”添加到鏈接的屬性“ data-hid”。 現在,我們可以在JQuery中檢索用戶單擊的鏈接的“隱藏”,以便將其發送到PHP腳本。
$("a#clicker").click(function(e){
var hidClicked = e.currentTarget.data("hid"); // retrieve the hid by data attr.
$.ajax({
type: "POST",
url: "<?php base_url(); ?>site/traffic",
data: { hid : hidClicked }, // pass it as POST parameter
success: function(data){
alert("I got a view");
console.log(data);
}
});
});
現在,在您的PHP代碼中,您可以通過以下方式檢索被單擊元素的“隱藏”
public function traffic(){
$id = $this->input->post("hid"); // this will return the hid POST parameter
$this->My_model->updateView($id);
}
然后,我不知道為什么要在updateView方法中聲明“ $ data”參數。 如果要更新數據庫,則只需要單擊元素的“隱藏”即可。 所以方法是
public function updateView($id = NULL){
$this->db->set('view', 'view+1');
$this->db->where('id', $id);
$this->db->update("NAME_OF_YOUR_TABLE");
}
那將是我的解決方案,也許有更好的解決方案。
您沒有將第二個必需參數$ data傳遞給updateView,這將導致異常。 此外,在此實例中不需要$ data,因為您已經在$ this-> db-> set()內部設置了要更新的參數。
您沒有將第二個必需參數$ data傳遞給updateView,這將導致異常。
此外,在此實例中不需要$data
,因為您已經在$this->db->set()
內部設置了要更新的參數。
來自CodeIgniter 3文檔的示例:
$this->db->set('field', 'field+1');
$this->db->where('id', 2);
$this->db->update('mytable'); // gives UPDATE `mytable` SET `field` = 'field+1' WHERE `id` = 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.