控制器未发送数据点火器

时间:2019-09-17 14:44:15

标签: php jquery codeigniter

我有一个准备好的ci应用程序,我正在尝试使用ajax,但是即使我尝试了许多正确的代码,get作品也可以,但是我从不认为配置存在问题 ajax_test视图

<script src="https://code.jquery.com/jquery-3.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
   var base_url = "<?=base_url()?>";
   $(document).ready (function(){
    $('#get_bt').click(function(){
        $.post(base_url+'ajax_test/info_page' , {name:'bashir' , id:'1'}, function(data){
            alert(data);

        })
        });
});

<button id="get_bt">get</button>

控制器

<?php
 class Ajax_test extends CI_Controller {
 public function index(){
    $this->load->helper('url');
    $this->load->view("ajax_test");

}
public function info_page(){
    echo $this->input->post('name');
}
}   
?>

请注意,它适用于get而不是post jQuery错误

无法加载资源:服务器的响应状态为403(禁止)

3 个答案:

答案 0 :(得分:2)

403错误是由于配置设置引起的。在文件 /application/config/config.php 中,您可以进行以下设置。

$config['csrf_protection'] = TRUE;

这是一件好事,但还要求您将CSRF令牌的名称/值以及“名称”和“ id”一起发送给控制器。

查看Cross-site request forgery (CSRF)上的文档,以了解如何获取这些值。

或者您可以使用GET作为另一个建议的答案。 (GET不检查CSRF。)

或者您可以使用$config['csrf_protection'] = FALSE;(通常是个坏主意)。

或者您可以使用 /application/config/config.php

中的以下内容将URI列入白名单
$config['csrf_exclude_uris'] = array('ajax_test/info_page');

但是发送CSRF凭据是最安全的也是最好的解决方案。

答案 1 :(得分:0)

尝试使用

$name = $_GET['name'];

echo $name

代替使用input-> post

或将您的ajax更改为

$.ajax({
        url: your url,
        type: "POST",
        data: {name:"bashir"},
        dataType: "json",
        contentType: false,
        cache: false,
        processData: false,
        success: function(data) {
            alert("success")
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert("Error");
        }
    });

答案 2 :(得分:0)

 <script type="text/javascript">
  $(document).ready(function(){   
  var BASE_URL = "<?php echo base_url();?>";
  $("#get_bt").click(function()
  {       
     $.ajax({
     type: "POST",
     url: BASE_URL + "ajax_test/info_page", 
     data: {name:'bashir'},
     dataType: "text",  
     cache:false,
     success: 
          function(data){
        alert('ok');
          }
      });
     return false;
     });
  });
 </script>
相关问题