我发送ajax请求将一些表单数据发布到cakephp控制器中,然后将用户移动到另一个页面以上传一些图像。这是我做的:
1-在反馈/添加控制器/动作的add.ctp视图中,我添加了javascript代码。我使用了jquery ajax并发送了表单数据
2-在反馈控制器的add动作中我编写了这段代码:
public function add() {
if ($this->RequestHandler->isAjax()) {
//commenting the next 3 lines has no effect
$this->layout = 'ajax'; // Or $this->RequestHandler->ajaxLayout, Only use for HTML
$this->autoLayout = false;
$this->autoRender = false;
$response = array('success' => false);
$data = $this->request->input(); // MY QUESTION IS WITH THIS LINE
// var_dump($data);
$this->render('/Uploads/add');
// exit();
} else {...}
现在我可以在firebug中看到响应为html但浏览器没有重定向。
任何人都可以告诉我wt是这里的问题??
由于
答案 0 :(得分:2)
通常,当您使用此类表单提交时,您希望使用JSON。这是我们使用的jQuery的标准使用实现。
尝试开发一个好的JSON响应,http://book.cakephp.org/2.0/en/views/json-and-xml-views.html
在jQuery中等待成功的发生:
jQuery.ajax({
url:baseUrl + '/Uploads/add',
type:'POST',
data: dataInModel,
success: function(data) {
alert('you got success!');
console.log(data);
//example reloading uploads:
$('#uploads').load(baseUrl + '/Uploads/index');
}
});
在你的成功功能中,你做任何你想做的事。因此,例如,您可以进行重新加载,重定向等。但这不是真正的ajax。如果您添加了上传,那么例如,如果您只重新加载带有上传的列表,则会像ajax一样。这是我在上面的代码示例中添加的原始示例。