我在此网址中使用CakePHP 1.26和CDN JQuery: http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
在HTML网页中,我有以下几行代码:
$.ajax({
type: "POST",
url: "http://mywebsite.com/controllers/avail/"+curl,
success: function(data) {
alert(data);}
});
在PHP页面中,我得到了另外几行代码:
function avail($uname){
$result1=$this->Site1->User->findByusername($uname);
if($result1){
return 1;
}
else{
return 0;
}
}
如您所见,Avail函数将返回0或1。
但是从服务器返回了一些冗余数据,
我在警告框中看到的是这样的事情(而不是0或1):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>my site</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<style type="text/css">
/* CSS Document */
/*PAGE LAYOUT*/
0
不,导致问题的不是缺少的控制器。
答案 0 :(得分:3)
或者在你的控制器中你可以设置$this->layout = ''; or $this->layout = 'ajax';
,你不应该得到任何其他输出。
答案 1 :(得分:1)
将RequestHandler
添加到控制器的$components
数组中。有了这个,当有Ajax请求时,Cake会自动使用Ajax布局。
答案 2 :(得分:0)
它告诉你出了什么问题吧?
<title>Missing Method in Controller</title>
所以我的猜测是Site1
或User
不存在。
答案 3 :(得分:0)
CakePHP返回一个错误页面,说明你正在调用的方法不存在......
我建议在没有jquery的情况下尝试使用URL,将其写入地址栏并使其正常工作......
答案 4 :(得分:0)
ajaxFunction(){
$this->layout = 'ajax';
Configure::write('debug', 0);
if (!$this->RequestHandler->isAjax()) {
$this->cakeError('error', array(
array(
'code' => '404',
'name' => __('Page Not Found', true),
'message' => 'The Request URL does not exist on this server',
'title' => __('404', true),
'base' => $this->base,
'url' => $this->here
)
));
exit();
}
$response=array();
//在此数组中获取数据
$response['result'] = Configure::read('Ajax.success');
$this->set('response',$response);
$this->renderXhrView();
}