TL; DR:我在使用jQuery設置POST
時遇到了一些麻煩,並且無法設置我的操作(又名帖子處理程序)。可能有人給我怎樣設置的動作/視圖的例子,我將如何從jQuery的發佈如何在CakePHP中創建jQuery帖子來編輯用戶名/密碼?
所以,我做了一些周圍挖掘,但我仍然無法得到它的工作,並沒有發現我不確定的。所以,我認爲我得到了郵件部分,但我不確定如何設置我的發佈請求處理程序。更具體地說,我不知道如何設置控制器的操作和視圖,以便我可以通過消息(成功/錯誤/驗證程序錯誤)得到正確的響應。對於用戶名,我使用的是電子郵件,從我在文檔中讀到的內容,只要你設置你的id
然後它會更新記錄。但是,我遇到了奇怪的問題,因爲它也更新我的密碼,即使它不是作爲jQuery帖子的一部分發送的。另一件事是,我注意到,即使我能夠成功地更新電子郵件,我目前的頁面也沒有更新電子郵件。我假設我必須在檢查成功後重新設置該值。任何人都可以如此善良地向我展示一個例子嗎?
這是我有:
操作:
public function edit() {
$this->autoRender = false; // I am not sure if I need this
Configure::write('debug', 0); // I think this disables all the extra debug messages I get with jQuery
$this->disableCache(); // No idea why I need this
if($this->request->is('ajax')) {
$id = $this->Auth->user('id');
// Going to be adding other cases for name/password/etc...
switch($this->params->data['post']) {
case 'email':
$result = $this->updateEmail($this, $id, $this->params->data);
break;
}
}
}
private function updateEmail($object, $id=null, $request=null) {
// Do I need to re-log them back in after I change their email to create a new session?
$object->AccountDetail->User->id = $id;
if($object->AccountDetail->User->save($request)) {
return $this->Session->setFlash(__('Your email has been updated!'));
} else {
return $this->Session->setFlash(__($object->AccountDetail->User->validationErrors));
}
}
jQuery的帖子:
$('#email :button').click(function() {
$.post('/account/edit', {post: 'email', email: $('#email').val() });
});