我有一个按钮Next
改变页面-
<a class="disabled" href="step">
<button class="btn btn-primary launch-btn disabled next">NEXT</button>
</a>
而且,当这个按钮被单击时,我有一个Ajax函数,它将数据发送到控制器函数-
<script type="text/javascript">
$(function(){
$('.next').click(function() {
var a = $('#box').data('val');
$.ajax({
type: "POST",
url: "<?php echo base_url(); ?>study/CreateData",
data: a,
success: function(data)
{
console.log(data);
},
error: function()
{
console.log("fail");
}
});
});
});
</script>
我用它来接收来自Ajax的值-
public function CreateData() {
$data = $this->input->post('data');
return $data;
}
当Next
按钮击中它的控制器,它改变到一个新的页面,我试图检索由Ajax发布到CreateData()
函数的值-
public function step()
{
$data = $this->CreateData();
if(!empty($data)){
print_r($data); exit;
}
else {
echo "blank"; exit;
}
$this->load->view('step2');
}
然而,这一直在重复blank
。这显然意味着返回的$data
是空的,但我不确定为什么。我的Ajax脚本中的success
函数正在记录data
,因此它将值发布到CreateData()
。我哪里做错了?
你的javascript应该是这样的
<script type="text/javascript">
$(function(){
$('.next').click(function() {
var a = $('#box').data('val');
$.ajax({
type: "POST",
url: "<?php echo base_url(); ?>study/CreateData",
data: {my_data: a},
success: function(data)
{
console.log(data);
},
error: function()
{
console.log("fail");
}
});
});
});
</script>
注意data
属性。我已将其更改为包含变量a
的对象。
现在你应该可以在php函数中使用
检索它了public function CreateData() {
$data = $this->input->post('my_data');
return $data;
}
Adr的回答解决了部分问题。为了实际存储和访问数据,将其存储在会话中而不是变量中就可以了——
public function CreateData() {
$data = $this->input->post();
$this->session->unset_userdata('createData');
$this->session->set_userdata('createData', $data);
}
这防止了$data
变量在第二次调用时被覆盖。