В настоящее время я работаю над проектом со структурой CodeIgniter. Я использую jQuery 1.7.1, и я хочу реализовать вызов ajax с данными, чтобы добавить сообщение.
Странно то, что функция работает и возвращает предупреждение без лишних данных. Но функция с данными возвращает ошибку HTML 500 (в консоли из chrome).
Запрашиваемая страница - не более чем скрипт php, повторяющий: «Это работает!».
Код, который работает:
$.post("/ajax/add_post_to_profile",
function(data) {
alert("Data Loaded: " + data);
});
Код, который не работает:
$.post("/ajax/add_post_to_profile", { msg: "My test msg!"},
function(data) {
alert("Data Loaded: " + data);
});
UPDATE:
Здесь контроллер codeigniter, который обрабатывает запрашиваемую страницу:
class PostController extends CI_Controller {
public function __construct(){
parent::__construct();
}
public function addPostToProfile() {
echo 'It works!!!';
}
}
Обновление 2:
Я протестировал функцию с новым запросом файла, помещенным в корень приложения. И тогда это работает как шарм.
Похоже, контроллер CodeIgniter блокирует запрос POST или что-то в этом роде.
Обновление 3:
Я обнаружил, что это безопасность CSRF CodeIgniter. Это работает, когда я выключаю его.
Я искал в Интернете решение сохранить CSRF, но код, который я нашел, не работает :(.
<script>
$('#ajax_test').click(function() {
$.post("/ajax/add_post_to_profile", { msg: "My test msg!", csrf_token_name: "<?php echo $this->security->get_csrf_hash(); ?>"},
function(data) {
alert("Data Loaded: " + data);
});
});
</script>