CakePHP 1.3 で ajax ログインを実装しようとしています。シンプルなユーザー名/パス ログインのポップアップが表示されます。
以下は私のviews/elements/login.ctpにあります:
echo $this->Form->create('User', array('url'=>array('controller'=>'users','action'=>'login'), 'id'=>'user_login'));
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->end('Login'));
以下は私のコントローラーにありますcontrollers/users_controller.php
public function ajax_login() {
$response = array('success'=>false);
if($this->RequestHandler->isPost()) {
if($this->Auth->login()) {
$response = array('success'=>"true");
} else {
$response = array('success'=>false);
}
}
$this->set('response', $response);
}
上記のコントローラーのビューは、views/users/ajax_login.ctpの下にあります。次の行のみがあります。
echo $javascript->object(isset($response) ? $response : array());
私のAjaxには次のコードがあります:
function login_user(){
var username = $("#UserUsername").val();
var password = $("#UserPassword").val();
if(username == "" || username == null || password == "" || password == null){
alert("Please enter a username and password");
return false;
}
$.ajax({
url:"/users/ajax_login",
type:"POST",
data:$('#user_login').serialize(),
dataType:"json",
async: true,
success: function() { console.log("success"); },
error: function(msg) { console.log(msg); }
});
return false;
}
現在、すべてが完全に機能しているように見えますが、これは常に「エラー」コールバックに失敗しており、その理由はわかりません。以下のスタックオーバーフローのリンクをすべて読みましたが、どれも問題ではないようです!
JSON が有効な ときに $.ajax の不正な形式の JSON を介して json ファイルを要求すると、奇妙な JSON の動作が発生しますか? struts2 json_encode で Ajax エラーが発生し 、不正な形式の JSON (余分な隠し文字を含む) が作成 される
私が疑う唯一のことconsole.log(msg)
は、エラーを読んだときに、正しい形式の正しい HTML 応答{"success":true}を取得することです...しかし... "responseText" は次のようなものを取得します。
responseText: "{"success":true}<!-- 0.375s -->"
したがって、基本的には、この「<!-- 0.375s -->」が原因で、ajax 呼び出しで json 形式が常に失敗すると推測しています。いったいどうやってこれを取り除くのですか?!... これが CakePHP の問題なのか、それとも AJAX/JSON の問題なのか、もはやわかりません!... 私は両方に 5 年以上取り組んできましたが、今は立ち往生!