Я разрабатываю веб-сайт с Code Igniter 2.1.3. Я использую вызов AJAX для отправки данных на контроллер, но по какой-то причине данные не отправляются.AJAX call не публикует данные
Я использую вызовы AJAX по всему приложению, и все они работают хорошо, только не этот.
Мое мнение:
<div id="ajaxResult">
<div class="page-header"><h2>Review Comments</h2></div>
<div class="row-fluid">
<div class="span12">
<?php if(count($comments)): ?>
<table class="table">
<thead>
<tr>
<th>Author</th>
<th>Email</th>
<th>IP Address</th>
<th>Date</th>
<th>Comment</th>
<th>Approve</th>
</tr>
</thead>
<tbody>
<?php foreach($comments as $comment): ?>
<tr>
<td>
<?php echo $comment->comment_author; ?>
</td>
<td><?php echo $comment->comment_author_email; ?></td>
<td><?php echo $comment->comment_author_IP; ?></td>
<td>
<?php
$date = new DateTime($comment->comment_date);
$date = $date->format('d/m/Y');
echo $date;
?>
</td>
<td>
<?php echo $comment->comment_content; ?>
</td>
<td>
<?php
$approve = array(
'name' => 'comment_approved',
'class' => 'approve',
'value' => '1',
'data-commentid' => $comment->id
);
echo form_checkbox($approve);
?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php else: ?>
<p>No comments were found for review.</p>
<?php endif; ?>
</div>
</div>
</div>
<script>
$(function()
{
$('.approve').on('click', function()
{
var id = $(this).data('commentid'); alert(id);
$.ajax({
url: "<?php echo site_url('blog/admin/review_comment'); ?>",
type:'POST',
data: { comment_id: id },
success: function(data) { $('#ajaxResult').html(data); } // End of success function of ajax form
}); // End of ajax call
});
});
</script>
Моя функция контроллера:
public function review_comment()
{
$this->load->helper('form');
$this->load->model('blog_comment_m');
if(isset($_POST['comment_id']))
{
$id = $this->input->post('comment_id');
$data['comment_approved'] = 1;
$this->blog_comment_m->save($data, $id);
$this->data['comments'] = $this->blog_comment_m->get_by(array('comment_approved'=>0));
$this->load->view('admin/review_comments', $this->data);
}
else
{
$this->data['comments'] = $this->blog_comment_m->get_by(array('comment_approved'=>0));
$this->data['subview'] = 'admin/review_comments';
$this->load->view('admin/_layout_main', $this->data);
}
}
Я пытался предупредить comment_id и это дает мне значение 1. В контроллере я делаю var_dump($_POST)
, всегда пустой ,
Я также пробовал if(isset($_POST['comment_id']))
. В контроллере он никогда не переходит в инструкцию if(isset($_POST['comment_id'])
.
Почему?
Лучший способ определить, отправляются ли данные или нет, - проверить слой 'network'. 'Firebug addon'' firefox', 'chrome' (щелкните правой кнопкой мыши -> Inspect element -> вкладка Network) или установите' fiddler' http://fiddler2.com/. Пожалуйста, подтвердите, что данные не отправляются через сетевой уровень. В противном случае проблема кроется в другом месте. – Chilpol
Вы можете видеть, как отправляет и получает на вкладке Консоль. – MahanGM
Если я смотрю вкладку NET в firebug, я вижу следующее: Состояние: обнаружена ошибка 302 (Прочитайте об этом, я не перенаправляю ничего не уверен, почему я получаю эту ошибку. На вкладке «Почта» я вижу это: Параметры comment_id = 1 Источник comment_id = 1 Итак, все выглядит хорошо для меня? Есть ли что-нибудь еще, что я должен проверить? Большое спасибо –