所以,我有一些簡單的代碼設置,我已經將它簡化爲僅僅用於測試目的的基本要素。下面是我的javascript:jQuery AJAX POST未被識別CakePHP 3
$('a#delete').on('click', function(e) {
e.preventDefault();
$.post($(this).attr('href'), $('input.delete:checked').serialize());
})
這裏是我的控制器代碼:
public function delete() {
debug($this->request->is('ajax'));
debug($this->request->is('post'));
debug($this->request->data);
die();
}
目前,我有我使用測試一個複選框:
<input type="checkbox" name="delete_portfolio" class="delete" value="15">
我一直在使用驗證提琴手,它發送POST
請求數據「delete_portfolio=15
」。但是,$this->request->is('post')
返回false,即使這正是發送的內容。 $this->request->data
爲空。有趣的是,$this->request->is('get')
實際上返回true,但$this->request->query
仍然是空的。
我只是想弄清楚我在做什麼錯誤發送一個AJAX POST
請求蛋糕。
編輯
我只是想包括我在這裏找到了一些新的信息。最後我補充說:
debug($_SERVER['REQUEST_METHOD']);
debug($_POST);
要我控制器代碼,看看PHP所看到的請求的方法,原來它返回'POST'
預期,並返回正確的數據,所以才CakePHP的3,這不是把它看作POST並沒有看到數據,也許這是一個錯誤?
$('a#delete')不應該是一個標識爲的標識,並且在您的HTML中,我看到的輸入是一類「刪除」而不是標識。我無法想象你如何在GET請求中獲得價值,正如你所說的。 – Michel
所以,問題不在於單擊事件不起作用。正如我在問題中所述,我可以看到帶有Fiddler的POST請求以及數據。我報告了我從控制器返回的內容,該控制器也收到了請求。我沒有在HTML中包含我點擊的鏈接,因爲我覺得這是不相關的,因爲問題不在於點擊事件。 –
檢查'REQUEST_METHOD' [** server var **](http://php.net/manual/en/reserved.variables.server.php),如果在確定發送POST時不是'POST' '請求,那麼你的服務器/ PHP安裝需要一個或兩個bitchslaps。 – ndm