我正在使用启用了csrf的codeigniter。我正在制作一些ajax帖子请求但不知何故我得到403帖子禁止错误。我的文件夹结构是这样的,我已经包含了这个js,其中ajax代码写在应用程序文件夹之外。我用于ajax请求的代码是
var data = {
name: $('.name').val(),
crm_csrf_token: $('input[name="crm_csrf_token"]').val()
}
var url = 'http://demo/signup/signup';
$.ajax({
url: url,
dataType: 'json',
type: 'post',
contentType: 'application/json',
data: data,
success: function( data, textStatus, jQxhr ){
console.log(data);
console.log(textStatus);
console.log(jQxhr);
},
error: function( jqXhr, textStatus, errorThrown ){
console.log(jqXhr);
console.log(textStatus);
console.log(errorThrown);
}
});
所以我哪里错了。在进行这个ajax调用之前我也在使用javascript验证表单。在应用程序forlder之外也无法访问site_url()和base_url。
答案 0 :(得分:0)
试试这个对我有用,我想你的网址有问题。在这里我纠正这个,可能适合你。
<强> JQuery的强>
var data = {
name: $('.name').val(),
crm_csrf_token: $('input[name="crm_csrf_token"]').val()
}
//Url should be index.php/YourControllerName/YourMethodName
var url = '<?php echo base_url(); ?>index.php/demo/signup';
$.ajax({
url: url,
dataType: 'json',
type: 'post',
contentType: 'application/json',
data: data,
success: function( data, textStatus, jQxhr ){
console.log(data);
console.log(textStatus);
console.log(jQxhr);
},
error: function( jqXhr, textStatus, errorThrown ){
console.log(jqXhr);
console.log(textStatus);
console.log(errorThrown);
}
});
CI控制器:
<?php
class demo extends CI_Controller {
public function signup()
{
echo 'Hello World!';
}
}
问候!
答案 1 :(得分:0)
你只需要通过使用jquery cookie发送csrf令牌,你可以从这里下载它 https://github.com/js-cookie/js-cookie
现在在你的ajax电话中
$。AJAX({
url:url,
data:{
"<?php echo $this->security->get_csrf_token_name(); ?>": Cookies.get('your_csrf_cookie_name_in_config')
},
method :"POST",
success:function(data){
$("#city").html(data);
}
});