Cake вернул время, затраченное на поиск данных в JQuery Alert Box - PullRequest
0 голосов
/ 30 мая 2010

Когда я занимался самообучением в JQuery Ajax в Cakephp,
Я обнаружил странное поведение в окне предупреждений JQuery.

Вот несколько строк кода JQuery Ajax, который я использовал:

 $(document).ready(function(){  
        $(document).change(function(){ 
            var usr = $("#data\\[User\\]\\[name\\]").val();
            $.post{"http://www.mywebsite.com/controllers/action/",
                usr,
                function(msg){alert(msg);}
            }
        });
    });   

В окне Alert отображается сообщение, возвращаемое из действия:

Helloworld <!--0.656s-->

Я не уверен, почему в окне «Предупреждение» отображалось количество потребляемого времени,
так как это не было в моем коде следующим образом:

function action($data=null){
    $this->autoRender = false;
    $result2=$this->__avail($data);           
    if($result2==1)
        {return "OK";}
    else
        {return "NOT";}           
}

CakePHP вернул некоторую дополнительную информацию в поле Alert.

Позже я изменил одну строку кода и попробовал это вместо этого,
и тогда потребление времени не отображалось на экране:

$(document).ready(function(){  
            $(document).change(function(){ 
                var usr = $("#data\\[User\\]\\[name\\]").val();
                $.post{"http://www.mywebsite.com/controllers/action/",
                    usr,
                    function(msg){$("#username").append('<span>'+msg+</span'>);}
                }
            });
        });   

1 Ответ

2 голосов
/ 31 мая 2010

Это нормально. CakePHP обычно вставляет временную метку для каждого просмотра. Просто добавьте Configure::write('debug', 0) в первую строку вашего действия, чтобы избежать вставки метки времени.

Итак, ваше действие должно выглядеть примерно так:

function action($data=null){
  Configure::write('debug', 0)
  $this->autoRender = false;
  $result2=$this->__avail($data);           
  if($result2==1) {return "OK";}
  else {return "NOT";}           
}

Если ваше действие направлено как на запрос Ajax, так и на обычный запрос Http:

function action($data=null){
  if($this->RequestHandler->isAjax()) {
    Configure::write('debug', 0)
    $this->autoRender = false;
    $result2=$this->__avail($data);           
    if($result2==1) {return "OK";}
    else {return "NOT";}           
  } else {
    //Not Ajax Request. 
  }
}

Также обязательно добавьте RequestHandler в переменную компонентов в вашем AppController.

var $components = array('RequestHandler', . . . . . . );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...