【发布时间】:2017-03-23 09:28:02
【问题描述】:
我的 html 页面上有两个链接:
<a id="1" onclick="like(this.id)">first</a>
<a id="2" onclick="like(this.id)">Second</a>
我的 JS 如下:
function like (id) {
$.ajax({
type:'POST',
data: {
func:
'getNewLocations',
'<?php echo $this->security->get_csrf_token_name(); ?>':
'<?php echo $this->security->get_csrf_hash(); ?>',
message:id
},
url:'<?php echo base_url();?>index.php/Category/like',
success: function(result, statut) {
if (result == 'add') {
//do something
}
else if (result == 'remove') {
//do something
}
}
});
}
而php方法如下(仅举例):
public function like() {
echo 'add';
}
当我首先单击链接 1 时,ajax 请求工作正常,服务器回答“添加”。但是当我点击链接 2 时,出现 403 错误。更令人惊讶的是,当我点击链接 2 上的第一个按钮时,它可以工作,但链接 1 却没有。 我使用 codeIgniter。
知道为什么以及如何解决它吗? 谢谢
【问题讨论】:
-
在函数
event.preventDefault();在这行function like (id) {之后添加这个 -
我没有看到您返回新的 csrf 令牌名称/值以在下一个服务器请求中使用,因此您的后续请求被拒绝
-
它不会改变任何东西..
-
@PatrickEvans 我该怎么做?
-
@devpro,如果锚标签实际上没有 href 属性,则不需要。当没有 href 属性时,它不会在点击时执行导航操作
标签: javascript php ajax codeigniter