我在使用cakePHP和MySQL开发的应用程序中使用jQuery。
在此jQuery代码中
$.ajax({
type: "POST",
url: "./updateField",
data: "name="+fieldname,
success: function(msg){
alert( "Data Saved: " + msg);
}//success
});//ajax数据库操作运行正常,但如果我使用alert语句,它会显示一个很大的HTML文件...不知道为什么它会来。
发布于 2009-06-10 10:10:41
它显示一个HTML,因为这是您从服务器获得的内容。我认为这是因为AJAX调用实际上并没有阻止呈现页面,而是返回XML或Json结构。我不知道您在CakePHP中有什么选项来返回XML或Json,而不是呈现页面,但问题的根源肯定是在服务器端,而不是客户端。
发布于 2009-06-10 10:48:23
我相信在默认情况下,Cake不会通过主布局运行Ajax请求,所以大多数html不应该在那里。如果没有,你可以通过专门调用控制器的render方法并将布局设置为'ajax‘来强制使用哪种布局。参考:http://book.cakephp.org/view/57/Controller-Methods#render-428
我在启用debug时也遇到了问题,因为所有SQL语句都被记录到AJAX请求底部的一个HTML表中,并且当数据类型预期为AJAX时,会导致一些严重的解析问题。这可能是一个技巧,但我做了以下操作来绕过它。
在beforeFilter()的主AppController中,我添加了以下内容(确保所有其他控制器的beforeFilter方法都调用父方法):
if ($this->RequestHandler->isAjax()) {
$db =& ConnectionManager::getDataSource('default');
$db->fullDebug = false;
} 在cake/libs/model/datasources/dbo_soure.php中,在我的版本中大约2074行,我更改了
if (Configure::read() > 1) {
$this->showLog();
} 至
if (Configure::read() > 1 && $this->fullDebug) {
$this->showLog();
} 发布于 2009-06-10 10:11:23
因为这是来自帖子的回复...
https://stackoverflow.com/questions/974686
复制相似问题