You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter 3 页面URL存入数据库功能实现求助

解决评论URL无法存入数据库的问题

嘿,看了你的代码,我一眼就找到了问题的核心:前端AJAX请求没有把页面URL传递给后端控制器,所以数据库的url_link字段自然接收不到值。咱们一步步来修复:

步骤1:在视图中传递当前页面URL

首先,在你的评论提交按钮上添加一个存储当前页面URL的属性,用按钮的data属性会更简洁:

修改视图里的提交按钮代码:

<button class="sendmessage sendmessageclick" 
        data-d-id="<?php echo $pages[0]->pageId;?>"
        data-url="<?php echo current_url();?>"> <!-- 新增这行,用CodeIgniter内置函数获取当前页面URL -->
    <span class="far fa-paper-plane"> </span>
    <span class="d-none d-block-sm">Send</span>
</button>

这里用了CodeIgniter的current_url()函数,能自动获取当前页面的完整URL,不用手动拼接,非常省心。

步骤2:修改JS的AJAX请求,带上URL参数

接下来调整common.js里的AJAX请求,把页面URL加入到请求数据中:

$('.sendmessageclick').click(function(){
    $('#hiddenArea').val(quill.container.firstChild.innerHTML);
    // 从按钮的data属性里拿到页面URL
    const pageUrl = $(this).data('url');
    $.ajax({
        type:'post',
        async: false,
        // 新增url_link参数,把页面URL传去后端
        data:{
            page_id:$(this).attr('data-d-id'),
            comment:$('.add_comment').val(),
            url_link: pageUrl 
        },
        url: static_url+'/pages/add_comment',
        success: function(result){
            $('.add_comment').val('');
            if(result == 'true'){
                $('.comment_alert').show();
                setTimeout(function() {
                    $('.comment_alert').hide();
                    location.reload();
                }, 3000);
            }else{
                alert('Error');
                location.reload();
            }
            console.clear();
        }
    });
});

步骤3:验证数据是否正常传递(可选但推荐)

为了确保后端能正确接收,你可以在控制器里临时加一行打印代码,检查$urllink的值:

public function add_comment(){
    if ($this->session->userdata('user_id')){
        $comment = $this->security->xss_clean($this->input->post('comment'));
        $pageid = $this->security->xss_clean($this->input->post('page_id'));
        $urllink = $this->security->xss_clean($this->input->post('url_link'));
        
        // 临时打印,确认URL是否正确传递
        var_dump($urllink); die;
        
        $data = array(
            'user_id' => $_SESSION['user_id'],
            'page_id' => $pageid,
            'url_link' =>$urllink,
            'comment' => $comment,
            'created' => date("Y-m-d H:i:s"),
            'modified' => date("Y-m-d H:i:s")
        );
        echo $query = $this->page_model->add_comments($data);die;
    }else{
        redirect();
    }
}

测试提交评论后,如果你能看到当前页面的URL,就说明数据传递正常了,之后把这行打印代码删掉即可。

这样修改后,页面URL就能正常存入数据库,之后你就可以在邮件模板里调用这个字段,给用户发送带评论页面链接的邮件啦!

内容的提问来源于stack exchange,提问作者Pierre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 21:47:34