我一直坚持这个问题一整天。我想要做的是使用Ajax从视图向控制器发送2个值。
这是hot_products
视图中的代码:
<script>
$(function(){
$('#btnSubmit').click(function() {
var from = $('#from').val();
var to = $('#to').val();
alert(from+" "+to);
$.ajax({
url: "/orders/hot_products",
type: 'POST',
data: {"start_time": from, "end_time": to,
success: function(data){
alert("success");
}
}
});
});
});
和我的hot_products控制器:
public function hot_products()
{
if( $this->request->is('ajax') ) {
$this->autoRender = false;
//code to get data and process it here
}
}
我不知道如何获得2个值start_time和end_time。 请帮我。提前致谢。 PS:我正在使用cakephp 2.3
答案 0 :(得分:4)
$this->request->data
为您提供控制器中的帖子数据。
public function hottest_products()
{
if( $this->request->is('ajax') ) {
$this->autoRender = false;
}
if ($this->request->isPost()) {
// get values here
echo $this->request->data['start_time'];
echo $this->request->data['end_time'];
}
}
<强>更新强> 你的ajax中有错误,
$.ajax({
url: "/orders/hot_products",
type: 'POST',
data: {"start_time": from, "end_time": to },
success: function(data){
alert("success");
}
});
答案 1 :(得分:3)
如果您的方法是 POST :
if($this->request->is('ajax'){
$this->request->data['start_time'];
$this->layout = 'ajax';
}
或强>
public function somefunction(){
$this->request->data['start_time'];
$this->autoRender = false;
如果方法是 GET :
if($this->request->is('ajax'){
$this->request->query('start_time');
$this->layout = 'ajax';
}
或
public function somefunction(){
$this->request->query('start_time');
$this->autoRender = false;