控制器不发送数据代码点火器

我有一个现成的 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 The jquery error


加载资源失败:服务器响应状态为 403(禁止)


幕布斯6054654
浏览 143回答 2
2回答

动漫人物

403 错误是由于配置设置造成的。在文件/application/config/config.php 中,您具有以下设置。$config['csrf_protection']&nbsp;=&nbsp;TRUE;这是一件好事,但也需要您将 CSRF 令牌名称/值连同“名称”和“ID”一起发送到控制器。查看有关跨站点请求伪造 (CSRF)的文档以了解如何获取这些值。或者您可以使用 GET 作为建议的另一个答案。(GET 不检查 CSRF。)或者您可以使用$config['csrf_protection'] = FALSE;(通常是个坏主意。)或者您可以使用/application/config/config.php 中的以下内容将 URI 列入白名单$config['csrf_exclude_uris']&nbsp;=&nbsp;array('ajax_test/info_page');但是发送 CSRF 凭证是最安全的,因此也是最好的解决方案。

PIPIONE

尝试使用$name = $_GET['name'];echo $name而不是使用 input->post或将您的 ajax 更改为$.ajax({&nbsp; &nbsp; &nbsp; &nbsp; url: your url,&nbsp; &nbsp; &nbsp; &nbsp; type: "POST",&nbsp; &nbsp; &nbsp; &nbsp; data: {name:"bashir"},&nbsp; &nbsp; &nbsp; &nbsp; dataType: "json",&nbsp; &nbsp; &nbsp; &nbsp; contentType: false,&nbsp; &nbsp; &nbsp; &nbsp; cache: false,&nbsp; &nbsp; &nbsp; &nbsp; processData: false,&nbsp; &nbsp; &nbsp; &nbsp; success: function(data) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert("success")&nbsp; &nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; &nbsp; error: function(jqXHR, textStatus, errorThrown) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert("Error");&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; });
打开App,查看更多内容
随时随地看视频慕课网APP