0

Code Igniter 2.1.3 で Web サイトを開発しています。AJAX 呼び出しを使用してコントローラーにデータを送信していますが、何らかの理由でデータが送信されません。

私はアプリケーション全体で 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'])ステートメントには入りません。

何故ですか?

4

1 に答える 1

0

それを見つけた。

フォーム送信でcsrfを使い始めたのは私にとって新しいことであり、このURLを構成ファイルに追加しませんでした。

これを追加:

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

問題を解決しました......

大変お世話になりました。

于 2013-07-15T07:46:54.757 に答える