2012-03-10 170 views
0

擺弄CodeIgniter並試圖抓住它,因爲我從來沒有使用過AJAX。CodeIgniter AJAX:POST不工作,GET工作正常

由於某些原因,當我使用GET方法時,我的AJAX工作正常,但如果將其切換到POST方法,它將停止工作。

我的JS:

$(document).ready(function(){ 

    $('.love').click(function(event) { 

     $.ajax({ 

      type: 'GET', 
      url: base_url + '/ajax/love_forum_post', 
      data: { post_id: 2, user_id: 1, ajax: 1 }, 

     }); 

     return false; 

    }); 

}); 

而且我的控制器:

​​

如果我切換類型爲 'POST' 我的JS裏面,然後抓住它與$這個 - >另一端input-> post()它不起作用。

有什麼建議嗎?

回答

0

嘗試使用此

$post_data = $_POST; 

,並使用該

print_r($post_data);die(); 

打印後的數據,你可以看到那裏,如果你趕上後的數據;

古德魯克!

1

有沒有可能你啓用了csrf_protection?

如果是,您需要發送令牌和值鍵作爲發佈參數以及發佈請求。

+0

是的。我啓用了CSRF保護。它在我禁用它時起作用。我如何將令牌傳遞給我的控制器等? – Leeloo 2012-03-10 14:52:34

2

我已經在兩種情況下測試了您的代碼:首先是 - 沒有csrf保護,我沒有看到代碼無法正常運行的原因。 爲了能夠更容易地進行測試,請在成功響應中附加$ .ajax調用。 像這樣

success: function(response) { 
      alert(response); 
      } 

並添加響應您的love_forum_post方法。

echo print_r($this->input->post(), true); 

這會讓你清楚地看到你的方法發生了什麼。

在我的安裝中,一切正常。

第二種情況是使用csrf保護。 在這種情況下,將新的參數添加到您的發佈對象。

<?php if ($this->config->item('csrf_protection') === true) : ?> 
      post_data.<?php echo $this->security->get_csrf_token_name()?> = '<?php echo $this->security->get_csrf_hash()?>'; 
<?php endif ?> 

這將使CI接受來自此URL的信息。

希望這會有所幫助。 乾杯

+0

對,甜美。問題是我已經啓用了CSRF保護。我如何通過CSRF令牌並記住我沒有實際的行動表單在這裏?它只是處理動作的錨標籤。 – Leeloo 2012-03-10 15:09:26

+0

從未嘗試過。檢查CI中的安全庫。沒有太多的方法,所以必須有一種方法來添加它沒有使用的方法(在你的情況下) – NemC 2012-03-19 21:47:54