Ajax jquery url access denied in codeigniter


$.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 方法都需要该密钥。

相关内容

  • 没有找到相关文章

最新更新