2015-02-05 198 views
0

我正在搜索大約4個小時,但我仍然不明白,爲什麼此代碼無法正常工作。無法通過ajax獲取POST的值

我使用Codeigniter框架,csrf關閉,xss過濾關閉。

我的JS:

var url_to_ajax = base_url + "ajaxcalls/newcomment"; 
$.ajax({ 
     url: url_to_ajax, 
     type: "POST", 
     data: {parent_id: "a"}, 
     success: function (data) { 
      alert(data); 
     } 
}); 

和控制器:

public function newcomment() { 

     $parent_id = $this->input->post('parent_id'); 

     echo "please print it: ".$parent_id; 
     print_r($_POST); 
} 

$parent_id是空的,$_POST是一個空數組。在警告我看到 「請打印:陣列()」就這樣。

有人知道爲什麼我不能從控制器警報中獲得「a」嗎?

+0

檢查'$ _SERVER ['REQUEST_METHOD']',看你的腳本是否真的在處理一個帖子。可能會導致重定向並將您的帖子轉換爲get。 – 2015-02-05 22:23:54

+0

你說得對,echo $ _SERVER ['REQUEST_METHOD'];打印GET,但爲什麼?然而,GET也是空陣列... – 2015-02-05 22:26:41

+0

有人說過,你試過jQuerie的'$ .post(...)'而不是'ajax'嗎? http://api.jquery.com/jquery.post/ – 2015-02-05 22:26:59

回答

0

如果您沒有使用url重寫,請在base_url中使用「index.php」。試試這個:

$.ajax({ 
    url: base_url + "index.php/ajaxcalls/newcomment", 
    type: "POST", 
    data: {parent_id: "a"}, 
    success: function (data) { 
     alert(data); 
    } 
}); 
+0

我正在使用網址重寫 – 2015-02-06 07:55:22

+0

PLZ檢查我更新的答案。在$ .ajax中直接使用'url' – 2015-02-06 08:22:17

1

你的代碼對我來說工作正常。可能是URL中有錯誤。試試這個代碼,看看是否有任何錯誤消息。

var url_to_ajax = base_url + "ajaxcalls/newcomment"; 
$.ajax({ 
     url: url_to_ajax, 
     type: "POST", 
     data: {parent_id: "a"}, 
     success: function (data) { 
      alert(data); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) 
         { 
          alert(errorThrown); 
         } 
});