2013-06-30 4 views
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. Существует проблема с доступом к функции reviews, как показано на панели console.log(xhr.responseText);.Ajax jquery url access denied in codeigniter

Как назначить значение url в ajax для выполнения этого способом codeigniter. У меня есть jQuery в другом файле: ajax.js

По достоинству оцените ваш ответ. Спасибо.

+0

ошибка 500 указывает, что файл цели имеет ошибку; проверьте свой журнал ошибок и оттуда. – Luceos

+0

неправильный путь? попробуйте с url: Блог/обзоры. Является ли ci_practice вашей папкой проекта codeigniter? – sinisake

+0

Да, он не может напрямую получить доступ к функции контроллера! Нет проблем в функции контроллера, так как я просто повторяю что-то для теста. Есть ли какой-либо синтаксис, который я должен соблюдать, чтобы правильно поместить URL-адрес в запрос ajax? –

ответ

0

Проблема была 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, которая необходима по умолчанию каждый метод POST при подаче из-за CSRF Enabled.

+0

Как я уже говорил, но вы [сказали] (http://stackoverflow.com/questions/17388660/ajax-jquery-url-access-denied-in-codeigniter#comment-25244037): 'Я пробовал! Нет удачи! ' –

+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',

запретной ошибка может быть 403 запрещена ошибкой из-за неисправный .htaccess переписывания вы должны удалить index.php URL вы .htaccess файл должен содержать

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

Ваш config.php должен содержать этот

$config['index_page'] = "";

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

+0

Теперь я получаю 403 Forbidden error вместо 500 Server Error! –

+0

см. Мой обновленный ответ –

+0

У меня нет index.php в моем URL-адресе, так как я использовал mod_rewrite! Но доступ к файлу запрещен, я не знаю! –