私は、ユーザーが自分のアプリケーションにログインすることができます以下の方法があります。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
あなたはPHPで配列を使用してjson_encode($ array)を使って配列をjson –
に変換することができます。 JavaScriptの成功の呼び出しでこれを使用して、エラーであるかどうかを判断し、関連するアクションを実行する方法について説明します。 – Cameron