#Edit我使用CakePHP 2.3.5
我想知道我的Ajax请求和Controller行为有什么问题。 这些是我遇到的问题:
我真的不知道发生了什么事,我会感激任何帮助!
这是源代码:
我的ajax请求
$('.addUser').on('click', function(){
var data = $('#UserAddForm').serialize();
$.ajax({
dataType: "html",
type: "POST",
evalScripts: true,
url: 'Users/add',
data: data,
success: function (){
$('#regInfo').html("User was created");
$('#regInfo').css('color', 'darkgreen');
},
error: function(){
$('#regInfo').html("User was not created");
$('#regInfo').css('color', 'darkgreen');
}
});
})
CakePHP中的我的UserController
public function add() {
if ($this->request->is('post')) {
$this->User->create();
if ($this->User->save($this->request->data)) {
$this->Session->setFlash(__('The user has been saved'));
} else {
$this->Session->setFlash(__('The user could not be saved. Please, try again.'));
}
}
}
在我的AppController中
public function beforeFilter(){
if ($this->request->is('ajax')) {
Configure::write('debug', 0);
$this->autoRender = false;
$this->layout = 'ajax';
}
}
答案 0 :(得分:1)
您可以在此处执行一些调试:
1 - 首先,确保您的请求达到正确的控制器功能。我注意到你的ajax函数中有url: 'Users/add',
。通常,在调用控制器/视图之前,这将是url: '/Users/add',
或找到另一种获取基本路径的方法
您可以进行简单的测试以确保它到达控制器视图功能:
$('.addUser').on('click', function(){
var data = $('#UserAddForm').serialize();
$.ajax({
dataType: "html",
type: "POST",
evalScripts: true,
url: 'Users/add',
data: data,
success: function (data){
console.log(data);
}
});
})
public function add() {
$this->layout = 'ajax';
$this->autoRender = false;
echo json_encode(array('this is some' => ' json data'));
}
2 - 如果#1工作正常,则开始仔细检查发布的数据:
public function add() {
$this->layout = 'ajax';
$this->autoRender = false;
//just checking for request data because you
//may be doing a put and not knowing it
if ($this->request->data) {
echo json_encode($this->request->data);
}
}
使用chrome或firefox并检查输出。