我有一个与数据库一起使用的cakephp代码,用于搜索给定的卡ID号并返回余额。 jquery代码看起来像这样。
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响应中获得了调用信息。”
例如 - 当我尝试在$ .ajax事件中访问错误函数内的xhr对象时
使用“xhr.responseText”我得到的长输出包括
<pre class="cake-debug">
..........并且在此结束时我只得到我编码到json中的错误。
{“错误”:“错误......”}
我使用了Configure :: write('debug',1);和Configure :: write('debug',0);没有任何运气。你可以看到我使用了Configure :: write('debug',0);在我的控制器功能的顶部..
请指教我解决这个问题。您的所有意见都非常受欢迎。
答案 0 :(得分:0)
如果您收到调试消息,表示您的代码中有错误,您应该修复它而不是隐藏它。阅读错误消息(或在此处粘贴)以找出并解决问题
你正在使用throw / catch。 Cake通常不使用异常来处理错误,除非您专门编写模型以抛出异常,否则将不会捕获您的错误状态。可能$ card只是返回false。
请在此处粘贴您的错误,如果它真的很长,请粘贴在pastebin上。