Php CodeIgniter:AJAX和JSON的问题
我试图在CodeIgniter中使用AJAX和JSON。我以前从未使用过这两种技术,但我开始掌握它了 以下是我想要达到的目标 在我的网站上,用户可以“喜欢”论坛上其他用户的帖子。我希望love链接旁边的计数器能够使用AJAX和JSON自动更新 以下是相关代码: 视图: 一个简单的HTML链接,用于将爱情添加到计数中Php CodeIgniter:AJAX和JSON的问题,php,jquery,ajax,json,codeigniter,Php,Jquery,Ajax,Json,Codeigniter,我试图在CodeIgniter中使用AJAX和JSON。我以前从未使用过这两种技术,但我开始掌握它了 以下是我想要达到的目标 在我的网站上,用户可以“喜欢”论坛上其他用户的帖子。我希望love链接旁边的计数器能够使用AJAX和JSON自动更新 以下是相关代码: 视图: 一个简单的HTML链接,用于将爱情添加到计数中 <p><a href="#" class="love"><?php if ($post->love) { echo $post->love;
<p><a href="#" class="love"><?php if ($post->love) { echo $post->love; } else { echo 0; } ?></a></p>
控制器:
单击链接时Ajax调用的函数
public 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');
$total_loves = $this->forums_model->add_love($post_id, $user_id);
echo json_encode($total_loves);
}
// If someone tries to access the AJAX function directly.
else
{
redirect('', 'location');
}
型号:
最后,调用model函数向数据库添加一个love并返回新的计数,它在控制器中使用JSON(我想)获取
所以
- 蒂姆
json\u encode()
返回值是一个整数。请尝试以下方法:
<?php
//...
echo json_encode(array('total_loves' => $total_loves));
//...
3.最后,我无法使用POST方法,因为我启用了CSRF保护。如何修改代码以允许使用POST方法而不是GET方法?或者GET方法可以吗? 我强烈建议使用POST而不是GET,因为GET请求被假定为而不是来更改任何数据。(为了更好地理解这个概念,谷歌搜索了“幂等性…” 关于CSRF保护,我在回答您的第一个问题时提供了一个解决方案(见上文)。1。我如何用JSON获取这个新的爱情计数,并让我的计数器显示新的总数? 你(几乎)已经这样做了。您的
json\u encode()
返回值是一个整数。请尝试以下方法:
<?php
//...
echo json_encode(array('total_loves' => $total_loves));
//...
3.最后,我无法使用POST方法,因为我启用了CSRF保护。如何修改代码以允许使用POST方法而不是GET方法?或者GET方法可以吗? 我强烈建议使用POST而不是GET,因为GET请求被假定为而不是来更改任何数据。(为了更好地理解这个概念,谷歌搜索了“幂等性…”
关于CSRF保护,我在回答您的第一个问题时提供了一个解决方案(见上文)。Genius!非常感谢你花时间研究我的问题。我真的很感激。它仍然不能完美地工作,但这只是因为我需要在我的视图中整理循环。你让我走上了正确的道路。:)天才!非常感谢你花时间研究我的问题。我真的很感激。它仍然不能完美地工作,但这只是因为我需要在我的视图中整理循环。你让我走上了正确的道路。:)
<?php
//...
echo json_encode(array('total_loves' => $total_loves));
//...
<?php
// Probably better to pass in these values from
// the controller, but this should work...
$CI =& get_instance();
$token = $CI->security->get_csrf_token_name();
$hash = $CI->security->get_csrf_hash();
?>
$.ajax({
type: 'POST',
url: base_url + '/ajax/love_forum_post',
data: {
post_id: 2,
user_id: 1,
'<?= $token; ?>': '<?= $hash; ?>' // this takes care of the CSRF issue
},
dataType: 'json',
success: function(response) {
alert(response.total_loves); // do something with the return value...
}
});
<?php
$is_ajax = $this->input->is_ajax_request();