2016-06-26 18 views
0

我有一個按鈕Next改變的頁面 -如何在使用Ajax進行按鈕點擊時將值發佈到控制器功能,並同時重定向到新頁面?

<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按鈕點擊它的控制器,其中其變爲新的一頁,我試圖找回阿賈克斯發佈到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()。我在這裏做錯了什麼?

回答

1

您的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的對象。現在

你應該使用

public function CreateData() { 
     $data = $this->input->post('my_data'); 
     return $data; 
    } 
+0

感謝您的迴應,但沒有奏效。它仍然不斷迴應'空白'。我想知道如果問題不是用Ajax發佈數據,而是用我試圖檢索函數「step」中的值的方式。我猜'createData()'中的'$ data'變量在我從'step'函數中調用它時會被覆蓋掉而沒有任何東西? –

0

Adranswer解決問題的一部分,能在你的PHP函數來檢索此。爲了實際存儲和訪問數據,將其存儲在會話,而不是可變的伎倆 -

public function CreateData() { 
     $data = $this->input->post(); 
     $this->session->unset_userdata('createData'); 
     $this->session->set_userdata('createData', $data); 
} 

這從稱爲第二時間時被覆蓋防止$data變量。

相關問題