2013-07-14 3 views
0

Я разрабатываю веб-сайт с 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']).

Почему?

+2

Лучший способ определить, отправляются ли данные или нет, - проверить слой 'network'. 'Firebug addon'' firefox', 'chrome' (щелкните правой кнопкой мыши -> Inspect element -> вкладка Network) или установите' fiddler' http://fiddler2.com/. Пожалуйста, подтвердите, что данные не отправляются через сетевой уровень. В противном случае проблема кроется в другом месте. – Chilpol

+0

Вы можете видеть, как отправляет и получает на вкладке Консоль. – MahanGM

+0

Если я смотрю вкладку NET в firebug, я вижу следующее: Состояние: обнаружена ошибка 302 (Прочитайте об этом, я не перенаправляю ничего не уверен, почему я получаю эту ошибку. На вкладке «Почта» я вижу это: Параметры comment_id = 1 Источник comment_id = 1 Итак, все выглядит хорошо для меня? Есть ли что-нибудь еще, что я должен проверить? Большое спасибо –

ответ

0

Найдено.

Это был тот факт, что я начал использовать csrf для отправки форм, что-то новое для меня, и я не добавлял этот url в файл конфигурации.

Добавление этого:

$config['csrf_exclude_uris'] = array('blog/admin/review_comment'); 

Решена проблема ......

Спасибо вам большое за помощь.

+0

Когда вы можете принять этот ответ, щелкнув по большой зеленой отметке (✔) под номером ответа. –

+0

Будут делать завтра, это не позволяет мне делать это сегодня ...;) –

Смежные вопросы