【问题标题】:403 Forbidden error using ajax in CodeIgniter在 CodeIgniter 中使用 ajax 出现 403 禁止错误
【发布时间】:2023-03-05 06:50:02
【问题描述】:

我正在使用 ajax 在我的 textbox 自动完成中显示名字,但我的 ajax URL 不起作用。每次都显示在网络标签中

403 禁止。

我试过这样的 ajax URL

 url:baseUrl + "/index.php/Employee_control/search_with_emp_name",
 url:baseUrl +"/Employee_control/search_with_emp_name",

但仍然显示相同的错误。

我的 .ht 访问代码

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

我的基本网址$config['base_url'] = 'http://localhost/test/';

我的看法

<input type="text" class="form_control" name="employee_name" id="employee_name">

custome.js

var getUrl = window.location;
var baseUrl = getUrl.protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1];


    $(document).ready(function() {
       $("#employee_name").keyup(function() {
           var emp_name = $('#employee_name').val();
              $.ajax({
                   type: "POST",
                   url:baseUrl + "/index.php/Employee_control/search_with_emp_name",
                   data: {
                      emp_name: emp_name
                   },

                   success: function(html) {
                      alert(html);
                   }
               });
            });
    });

控制器

public function search_with_emp_name(){
        echo $emp_name = $this->input->post('emp_name');
       $get_result=$this->Employee_model->search_emp_name($emp_name);
       print_r($get_result);
}

型号

public function search_emp_name($emp_name){
          $this->db->like('firstname', $emp_name, 'both'); 
          $query = $this->db->get('tbl_employee');
          $result = $query->result();
        if($result)
            {
              return $result;
            }
            else 
            {
              return 0;
            } 

}

【问题讨论】:

标签: php codeigniter codeigniter-3


【解决方案1】:

希望对您有所帮助:

首先确保您已在 config.php 中将 csrf 令牌设置为 false;

 $config['csrf_protection'] = FALSE;
 $config['csrf_token_name'] = 'csrf_test_name';
 $config['csrf_cookie_name'] = 'csrf_cookie_name';

或者,如果您不想将其设置为 false,只需在您的 ajax 调用中将数据传递给 csrf_token_nameget_csrf_hash 像这样:

 data: {'<?php echo $this->security->get_csrf_token_name(); ?>':'<?php echo $this->security->get_csrf_hash(); ?>'},

似乎问题出在您的基本网址上,所以将这行代码放在页面标题中并使用BASE_URLlike this

<script type="text/javascript">
     const BASE_URL = "<?php echo site_url();?>";
</script>
<script src="<?=site_url('your-js-path/js/custome.js');?>"></script>

你的 ajax 应该是这样的:

$(document).ready(function() {
       $("#employee_name").keyup(function() {
           var emp_name = $('#employee_name').val();
              $.ajax({
                   type: "POST",
                   url: BASE_URL+"Employee_control/search_with_emp_name",
                   data: {emp_name: emp_name},

                   success: function(html) {
                      alert(html);
                   }
               });
            });
    });

【讨论】:

  • 我的 custome.js 文件在应用程序之外。
  • 所以有什么问题只需提供我的答案中给出的路径
  • 显示 404 not found
  • 我只是想知道我在脚本中添加的 baseUrl 有什么问题?
  • 所以给你的文件正确的路径,你有没有在你的 config.php 中启用 csrf 保护
猜你喜欢
  • 2017-03-23
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 2016-01-12
  • 2013-07-19
  • 1970-01-01
  • 2023-03-10
  • 2019-05-08
相关资源
最近更新 更多