$.ajax({
type: 'POST',
url: '/ci_practice/blog/reviews',
data: 'res_id='+res_id,
success: function(data){
$('#screen-overlay').show(slow);
$('#screen-overlay').html(data);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
console.log(xhr.responseText);
alert(thrownError);
}
});
这会引发500错误。访问功能reviews
时出现问题,如控制台中的console.log(xhr.responseText);
所示。
我应该如何在ajax中为url分配值,以便以codeigniter方式执行此操作。 我在另一个文件中有jQuery:ajax.js
非常感谢您的回复。谢谢。
答案 0 :(得分:1)
您应该包含base_url
,其中包含控制器名称/
,然后包含您要访问的功能名称
$.ajax({
type: 'POST',
url: '<?php echo base_url(); ?>/controllername/function',
data: 'res_id='+res_id,
success: function(data){
$('#screen-overlay').show(slow);
$('#screen-overlay').html(data);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
console.log(xhr.responseText);
alert(thrownError);
}
});
在你的情况下,我认为blog
是控制器而reviews
是一个函数,所以看起来应该是url: '<?php echo base_url(); ?>/blog/reviews',
Forbidden Error
403禁止错误可能是由于错误.htaccess
重写,您应该删除index.php
文件应包含的.htaccess
网址
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
您的config.php
应该包含此内容
$config['index_page'] = "";
$config['uri_protocol'] = 'AUTO';
答案 1 :(得分:1)
问题是我的配置文件中启用了CSRF!但禁用它是一个错误的步骤。
此链接:Codeigniter Ajax CSRF Problem实际上解决了我的问题。 使用此代码:
var post_data = {
'res_id' : res_id,
'<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>'
};
这只是添加了一个CSRF安全密钥,由于启用了CSRF,在提交时默认情况下每个POST方法都需要这个密钥。