我一直在嘗試使用CakePHP 1.3實現ajax登錄。我有一個簡單的用戶名/密碼登錄彈出。雖然json格式的迴應是正確的,但Ajax json總是返回錯誤
以下是在我的意見/元件/ 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'));
以下是在我的控制器控制器/ 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);
}
用於上述控制器的視圖is under views/users/ajax_login.ctp只有這條線:
echo $javascript->object(isset($response) ? $response : array());
我阿賈克斯具有下面的代碼:
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:"https://stackoverflow.com/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;
}
現在,似乎一切都可以正常使用,但是,它始終未能進入「錯誤」回調,我不知道爲什麼。我已經閱讀了下面的所有關於stackoverflow的鏈接,並且它們都不是問題!
Weird JSON behavior when requesting a json file via $.ajax malformed JSON while JSON is valid? Ajax error result with struts2 json_encode creating a malformed JSON (with extra hidden character) php json_encode not returning proper json encoded string
我懷疑的唯一的事情是,當我讀到錯誤的console.log(msg)
,我得到正確的HTML響應{ 「成功」:真正}這是在正確的格式...但是...「responseText」我得到這樣的東西:
responseText:「 { 「成功」:真正}!< - 0.375s - > 「
所以基本上即時猜測它的這種」 < - 0.375s - >「這是造成JSON格式總是失敗!我的阿賈克斯電話。我不知道這是CakePHP問題,還是AJAX/JSON問題!...我已經工作了超過5年,現在我的工作已經完成卡住!
Sabev先生,生活救星。此外,我真的很喜歡你剔除問題的方式。從上面我嘗試了所有前3種方法。不幸的是,他們沒有工作,因爲我已經使用UTF-8,無論我喜不喜歡(阿拉伯文內容)。不過,多虧了你,我開始使用良好的練習(尤其是我開始使用'ajax'佈局作爲優秀練習),儘管這並沒有解決它! ,但「櫻桃在上面」它,#4是造成它的原因。在我的core.php我只是簡單地改變了調試模式從Configure :: write('debug',3); Configure :: write('debug',0); poof!解決了! – Amjo
@Amjo然後一定要接受答案,並upvote它。 ;) –
對不起,我不能投票,但我批准了答案。聲譽不會讓我投票。 chherz :) – Amjo