403 在 CodeIgniter 中使用 ajax 出现禁止错误

use*_*856 2 php codeigniter codeigniter-3

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

403 禁止。

我试过这样的ajax URL

 url:baseUrl + "/index.php/Employee_control/search_with_emp_name",
 url:baseUrl +"/Employee_control/search_with_emp_name",
Run Code Online (Sandbox Code Playgroud)

但仍然显示相同的错误。

我的 .htaccess 代码

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

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

我的看法

<input type="text" class="form_control" name="employee_name" id="employee_name">
Run Code Online (Sandbox Code Playgroud)

客户.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);
                   }
               });
            });
    });
Run Code Online (Sandbox Code Playgroud)

控制器

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);
}
Run Code Online (Sandbox Code Playgroud)

模型

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;
            } 

}
Run Code Online (Sandbox Code Playgroud)

Pra*_*eep 7

希望能帮到你 :

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

 $config['csrf_protection'] = FALSE;
 $config['csrf_token_name'] = 'csrf_test_name';
 $config['csrf_cookie_name'] = 'csrf_cookie_name';
Run Code Online (Sandbox Code Playgroud)

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

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

似乎问题出在您的基本网址上,因此将这行代码放在页面的标题中并BASE_URL像这样使用

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

你的 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);
                   }
               });
            });
    });
Run Code Online (Sandbox Code Playgroud)