我有一个准备好的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(禁止)
答案 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>