我有一個cakephp代碼與數據庫一起工作,以搜索給定的卡號,並返回餘額。 jQuery代碼看起來像這樣。CakePHP的jquery調試信息裏面的ajax響應
function subm(event){
$.ajax({
type: "POST",
//contentType: "application/json; charset=utf-8",
dataType:'json',
url:"\/balances\/balance",
data:$("#button_check_balance").closest("form").serialize(),
cache: false,
beforeSend:function(){
$("#loadingDiv").show(1000);
},
success:function (data, textStatus,xhr) {
$("#loadingDivision").hide(1000);
alert("balance is "+data.balance);
return false;
},
//failure: function(msg){alert(msg);},
error: function(xhr, ajaxOptions, thrownError){
$("#loadingDivision").hide(1000);
alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);
console.log(xhr.responseText);
},
/*complete: function(){
alert("complete");
},*/
});
我有balancesController和balance.ctp文件,控制器邏輯看起來像這樣。
function balance() {
$message = "";
$error = "";
$this->layout = 'ajax'; //layout should be ajax based on
Configure::write('debug', 0);
//gets the submitted card number
$card_id = $this->data['balances']['cardId']; //entered card id of the emp
if (!empty($this->data)) {
$this->header('Content-Type: application/json');
try {
$card = $this->Card->getBalance($card_id);
} catch (Exception $e) {
$error = "balance not available";
$resp = json_encode(array('error' => $error));
echo $resp;
exit;
}
if ($this->RequestHandler->isAjax()) {
$this->autoRender = $this->layout = false;
$resp = json_encode(array('cardData' => $cardObj);
echo $resp;
exit;
}
}
}
個問題,我有是 - 當出現平衡不可用錯誤「我得到在我的Ajax響應蛋糕DEBUG INFOMATION。」
如 - 當我嘗試使用「xhr.responseText」我得到了長時間的輸出由 <pre class="cake-debug">
訪問XHR對象錯誤函數中對阿賈克斯$事件 ..........和這個唯一的結局我得到了我編碼成json的錯誤。我已經使用Configure :: write('debug',1);和Configure :: write('debug',0);沒有任何運氣。你可以看到我使用Configure :: write('debug',0);在我的控制器功能頂部以及.. 請指教我解決這個問題。所有的輸入都非常感謝。
嗨JohnP,首先thanx很多回復。我對cakephp相當陌生,因爲我一直在Java背景下工作一段時間..我期望PHP異常處理是在java的水平......我現在明白的是它不能達到這個水平。我已經添加了一個代碼來使用'$ cardObj = $ this-> Card-> getNewBalance($ card_id);'然後訪問返回的對象的屬性..使用'$ name = $ cardObj [0] ['名稱']'....當沒有可用的搜索結果....訪問cardObject數組失敗 – Sanath 2011-03-07 08:38:47
@Sanath,PHP確實有異常處理,但CakePHP不使用異常。你可以添加你在pastebin上得到的錯誤嗎?很可能你正在訪問一個數組元素而不檢查它是否存在。 Cake沒有找到可以返回false,從而導致代碼中斷 – JohnP 2011-03-07 08:38:49