$.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 赋值以以代码点火器方式执行此操作。我在不同的文件中有jQuery:ajax.js
将感谢您的回复。谢谢。
您应该包含带有控制器名称/
然后是要访问的函数名称的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',
对于禁止的错误 403 禁止错误可能是由于错误的.htaccess
重写,您应该删除.htaccess
文件应包含的index.php
URL
RewriteEngine on
RewriteCond $1 !^(index.php|images|robots.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
您的config.php
应包含此内容
$config['index_page'] = "";
$config['uri_protocol'] = 'AUTO';
问题是我的配置文件中启用了 CSRF!但是禁用它是一个错误的步骤。
这个链接:Codeigniter Ajax CSRF问题实际上解决了我的问题。使用此代码:
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 方法都需要该密钥。