当用户点击链接时,我正在尝试更新数据库中的表。我想在不加载其他页面的情况下这样做
<a href="#" onclick="capturehit()">Like</a>
这是脚本
<script>
function capturehit() {
$.get("/sub/updatehit/?aid=<?php echo $article_id; ?>&uid=<?php echo $userid; ?>");
return false;
}
</script>
sub是我的控制器。我正在使用Codeigniter。
问题是这不起作用。当我评论$ .get()并添加一个警告(“你好”)时,点击时会出现一个警告框。但我不知道为什么$ .get()不起作用。
我在使用表单之前遇到过ajax和jquery的问题,在这种情况下我不得不求助于加载整个页面。在这种情况下我不能这样做,我不想那样做。请帮我弄清问题是什么。
答案 0 :(得分:1)
你使用了jquery,为什么你不尝试使用jquery点击功能?
$(function(){
$("#element").click(function(){
$.get("/sub/updatehit/?aid=<?php echo $article_id; ?>&uid=<?php echo $userid; ?>");
return false;
})
})
答案 1 :(得分:0)
如果您返回false,您将收到一个警告框。尝试从脚本中删除返回条件。
答案 2 :(得分:0)
不是一个错字吗?
/sub/updatehit.php/? //shoudn't that be updatehit.php?aid=...
答案 3 :(得分:0)
尝试使用jQuery lib和script的这个顺序:
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
function capturehit() {
$.get("/sub/updatehit/?aid=<?php echo $article_id; ?>&uid=<?php echo $userid; ?>");
}
</script>
您似乎是missing the jQuery library at top of this script
。这就是alert()
发生的原因,但由于页面中有might not be jQuery available before this script
,您的函数调用未被触发。
答案 4 :(得分:0)
你说你使用 CodeIgniter ,而“sub”是一个控制器。 因此,“updatehit”必须是您的控制器的一种方法。 您希望收到以下两个参数:援助和 uid
你的“子”控制器应如下所示:
<?php
class Sub extends CI_Controller {
public function updatehit($aid, $uid)
{
}
}
或者这个:
<?php
class Sub extends CI_Controller {
public function updatehit()
{
$aid = $this->input->get('aid');
$uid = $this->input->get('uid');
}
}
这是CodeIgniter的工作原理。 请记住 CodeIgniter使用基于段的方法。要调用updatehit()方法(并传递两个参数,例如aid = 2和uid = 3),URL必须如下所示:
http://www.example.com/sub/updatehit/2/3/
所以你的javascript代码变成了:
function capturehit() {
$.get("/sub/updatehit/<?php echo $article_id; ?>/<?php echo $userid; ?>");
return false;
}
以更恰当的方式,使用jQuery click事件(请参阅EnterJQ响应):
像
$(function(){
$("a#like").click(function(){
$.get("/sub/updatehit/<?php echo $article_id; ?>/<?php echo $userid; ?>/");
return false;
});
})
有关更多信息,请参阅CodeIgniter URLs。