Cakephp JQuery отладочной информации в ответе AJAX - PullRequest
0 голосов
/ 04 марта 2011

У меня есть код CakePHP, который работает с базой данных для поиска номера идентификатора карты и возврата баланса.код 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."

например - когда я пытаюсь получить доступ к объекту xhr внутри функции ошибки для события $ .ajax, используя "xhr.responseText"«Я получаю длинный вывод, состоящий из <pre class="cake-debug"> .......... и в конце этого ТОЛЬКО я получаю ошибку, которую я зашифровал в json.{"error": "error ...."} Я использовал Configure :: write ('debug', 1);и Configure :: write ('debug', 0);без удачи. Как вы можете видеть, я использовал Configure :: write ('debug', 0);в верхней части моей функции контроллера, а также .. пожалуйста, посоветуйте мне решить эту проблему.Весь ваш вклад очень высоко ценится.

1 Ответ

0 голосов
/ 07 марта 2011

Если вы получаете сообщение об отладке, это означает, что в вашем коде есть ошибка, и вы должны исправить ее, а не скрывать.Прочтите сообщение об ошибке (или вставьте его здесь), чтобы выяснить и устранить проблему

Вы используете команду throw / catch.Cake обычно не использует исключения для обработки ошибок, если только вы специально не закодировали свою модель для генерирования исключений, ваше состояние ошибки не будет зафиксировано.Возможно, $ card только что возвращает false.

Пожалуйста, вставьте свою ошибку здесь или на pastebin, если она действительно длинная.

...