0
$.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 错误。访问该功能时出现问题,reviewsconsole.log(xhr.responseText);控制台所示。

我应该如何在 ajax 中为 url 赋值,以便以 codeigniter 方式执行此操作。我在另一个文件中有 jQuery:ajax.js

将感谢您的回复。谢谢你。

4

2 回答 2

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.phpurl.htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

config.php应该包含这个

$config['index_page'] = "";

$config['uri_protocol'] = 'AUTO';

于 2013-06-30T09:02:30.450 回答
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 方法在提交时默认需要该密钥。

于 2013-06-30T10:07:00.760 回答