簡體   English   中英

將動態值傳遞給onclick函數-CodeIgniter

[英]passing dynamic value to onclick function - CodeIgniter

我試圖將id傳遞給onclick函數,但是在視圖上使用它時返回錯誤的值。

我的模型中的函數在數據庫中獲取ID:

public function _get_pr_id()
{
    $this->db->select('pr_id');
    $this->db->from('tblprequest');
    $this->db->order_by('pr_date_created', 'DESC');
    $this->db->limit(1);
    $query = $this->db->get();
    $row = $query->row();
    return $row->pr_id;
}

此功能的目的是獲取數據庫中最新插入的pr_id 例如“ 15”。

這是我的控制器:

public function purchase_request()
{
    if ($this->session->userdata('username'))
    {
        $data = array(
            'item' => $this->pr->_get_item(),
            'dept' => $this->pr->_get_department(),
            'pr_id' => $this->pr->_get_pr_id(),
            'admin_content' => 'pages/admin_purchase_request'
        );
        $this->load->view('admin_template/admin', $data);
    }
    else
    {
        redirect('login');
    }
}

我將函數$this->pr->_get_pr_id()的值pr_id到變量pr_id以便可以在AJAX的View中使用它。

這是視圖:

<a onclick="finalize('<?php echo $pr_id; ?>')" id="finalize" class="btn btn-success" aria-expanded="false">Finalize <i class="fa fa-check"></i></a>

我在視圖中的功能:

function finalize(id)
{
   alert(id);
}

現在是問題所在:例如,在我的數據庫中,最新的pr_id15但是當我單擊finalize按鈕時,它告訴我pr_id14 希望你理解我的問題。 謝謝

如果您的pr_id是自動遞增列,則只需使用pr_id按結果排序即可。 因為按整數列排序是快速的。 在您的情況下,獲取最新的pr_id后可能會插入新記錄。 因此,沒有萬無一失的解決方案來處理您的案件。 因此,當您調用finalize() ,再次檢查您當前的pr_id值是否為最新值。 基於此,您可以處理您的邏輯。

我想您必須將ajax與onclick事件一起使用,這樣才能確保您從數據庫中獲取了最后一個值,在您描述的用例中,有另一個來源在獲取數據后會更新數據庫,因此使用ajax可以提供最后的存儲值,您可以使用類似於以下內容的東西:

$(document).on("click",".yourselector",function(e){

$.ajax({
    type: 'POST',
    url: "controller/function",
    data: {
        param: myparamvalue
    },
    beforeSend: function() {

    },
    complete: function() {

    },
    success: function(_result) {

    }
});

});

其中Controller是使用該方法從db獲取ID的模型調用控制器的控制器

如果不起作用請替換:

controller/function

這樣 :

/controller/function

helps頭有幫助,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM