当我在Cakephp中对JQuery Ajax进行一些自学习时,
我在JQuery Alert Box中发现了一些奇怪的行为。
以下是我使用的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);}
}
});
});
警告框显示从操作返回的消息:
Helloworld
<!--0.656s-->
我不知道为什么消耗时间显示在警告框中,为什么 因为它不在我的代码中如下:
function action($data=null){
$this->autoRender = false;
$result2=$this->__avail($data);
if($result2==1)
{return "OK";}
else
{return "NOT";}
}
CakePHP在“警报”框中提供了一些额外信息。
后来我修改了一行代码,然后尝试了这个代码 然后在屏幕上显示时间消耗:
$(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'>);}
}
});
});
答案 0 :(得分:2)
这很正常。 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中的components变量中。
var $components = array('RequestHandler', . . . . . . );