摆弄CodeIgniter并尝试抓住它,因为我之前从未使用过AJAX。
出于某种原因,当我使用GET方法时,我的AJAX工作正常,但如果我将其切换到POST方法,它就会停止工作。
我的JS:
$(document).ready(function(){
$('.love').click(function(event) {
$.ajax({
type: 'GET',
url: base_url + '/ajax/love_forum_post',
data: { post_id: 2, user_id: 1, ajax: 1 },
});
return false;
});
});
我的控制器:
function love_forum_post()
{
$post_id = $this->input->get('post_id');
$user_id = $this->input->get('user_id');
$is_ajax = $this->input->get('ajax');
if ($is_ajax)
{
$this->load->model('forums_model');
$this->forums_model->add_love($post_id, $user_id);
}
// If someone tries to access the AJAX function directly.
else
{
redirect('', 'location');
}
}
如果我将类型切换为' POST'在我的JS中,然后在$ this-> input-> post()的另一端抓住它,它不起作用。
有什么建议吗?
答案 0 :(得分:2)
我已在两种情况下测试了您的代码: 首先 - 没有csrf保护,我认为没有理由让你的代码无法正常运行。 为了能够更轻松地测试它,请附加$ .ajax调用以及成功响应。 像这样的东西
success: function(response) {
alert(response);
}
并添加对love_forum_post方法的回复。
echo print_r($this->input->post(), true);
这样可以让您清楚地了解方法中的内容。
在我的安装中一切正常。
第二种情况是使用csrf保护。 在这种情况下,为帖子对象添加新参数。
<?php if ($this->config->item('csrf_protection') === true) : ?>
post_data.<?php echo $this->security->get_csrf_token_name()?> = '<?php echo $this->security->get_csrf_hash()?>';
<?php endif ?>
这会使CI接受来自此网址的帖子。
希望它会有所帮助。 干杯
答案 1 :(得分:1)
你有没有启用csrf_protection?
如果是,您需要将令牌和值键作为post参数与post请求一起发送。
答案 2 :(得分:0)
尝试使用此
$post_data = $_POST;
并使用此
打印发布数据print_r($post_data);die();
如果你抓住帖子数据就可以看到;
Gudluck !!