2013-07-14 50 views
0

我正在用Code Igniter 2.1.3開發一個網站。我正在使用AJAX調用將數據發佈到我的控制器,但出於某種原因數據未被髮送。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'])聲明。

這是爲什麼?

+2

確定數據是否被髮送的最好方法是檢查網絡層。 'firefox','chrome'的Firebug addon'(右鍵點擊 - > Inspect element - > Network標籤),或者安裝'fiddler' http://fiddler2.com/。請確認數據沒有通過網絡層發送。否則,問題在於別處。 – Chilpol

+0

你也可以看到發送到控制檯標籤。 – MahanGM

+0

如果我看看螢火蟲中的NET標籤,我看到:狀態:302錯誤找到(閱讀關於這一點,我沒有重定向任何不知道爲什麼我得到這個錯誤在Post標籤中,我看到這個:Parameters comment_id = 1 Source comment_id = 1所以這一切對我來說都很好嗎?還有什麼我應該檢查嗎?非常感謝你 –

回答

0

找到它。

事實上,我開始在表單提交上使用csrf,這對我來說是一件新事物,並且我沒有將這個url添加到配置文件中。

添加此:

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

問題解決了......

謝謝你非常非常的所有幫助。

+0

如果可以,請點擊答案評分下方的大綠色勾號(✔)接受答案。 –

+0

明天會做,今天不讓我做......;) –