0
我有以下的方法,其允許用戶登錄到我的申請:CakePHP的2.0的Ajax登錄
public function login()
{
if($this->Auth->user())
{
$this->Session->setFlash(__('Already logged in...'), 'default', array(), 'auth');
$this->redirect(array('controller'=>'pages','action'=>'display','home'));
}
if ($this->request->is('ajax'))
{
$this->layout = 'ajax';
if ($this->Auth->login())
{
}
else
{
}
}
else if ($this->request->is('post'))
{
if ($this->Auth->login())
{
return $this->redirect($this->Auth->redirect());
}
else
{
$this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth');
}
}
}
它允許用戶使用任一POST請求或通過Ajax請求登錄。然而,關於ajax請求,我如何使用JSON傳回結果?因此,例如,如果用戶輸入錯誤的細節傳回錯誤消息?
我已經設置了jQuery AJAX,所以我只需要在成功方法中做一些額外的邏輯來處理返回,它將顯示來自服務器的錯誤消息或基於返回服務器。
例如
$('form').live('submit', function (event) {
// Declare the form
var form = $(this);
// Stop the form from doing a native postback
event.preventDefault();
// Get the data from the form
var data = form.serialize();
$.ajax({
type: form.attr('method'),
url: form.attr('action'),
data: data,
success: function (responseHtml) {
// If correct login details
if(success){
window.location.href('INSERT LOCATION TO REDIRECT TO FROM SERVER');
} else {
alert('INSERT MESSAGE FROM THE SERVER');
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('Error!');
}
});
});
任何人都可以幫忙嗎?我正在使用CakePHP 2.0,並且我在網絡上看到的所有教程都已經過時,或者因爲我試圖實現的目標而太冗長。
這是不是很靈活速效,它不是回傳重定向鏈接。因此,爲什麼我想使用JSON,所以我可以傳遞多個變量。 – Cameron 2011-12-23 21:31:56
你可以在php中使用數組,然後使用json_encode($ array)將數組轉換爲json – 2011-12-23 21:36:19
小心地顯示一個例子嗎?然後,我將如何在JavaScript成功調用中使用它來決定它是否是錯誤,然後執行相關操作。 – Cameron 2011-12-23 22:07:51