在ajax响应中的Cakephp jquery调试信息

时间:2011-03-04 09:34:59

标签: cakephp cakephp-1.3

我有一个与数据库一起使用的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);在我的控制器功能的顶部.. 请指教我解决这个问题。您的所有意见都非常受欢迎。

1 个答案:

答案 0 :(得分:0)

如果您收到调试消息,表示您的代码中有错误,您应该修复它而不是隐藏它。阅读错误消息(或在此处粘贴)以找出并解决问题

你正在使用throw / catch。 Cake通常不使用异常来处理错误,除非您专门编写模型以抛出异常,否则将不会捕获您的错误状态。可能$ card只是返回false。

请在此处粘贴您的错误,如果它真的很长,请粘贴在pastebin上。