从jQuery调用控制器函数

时间:2019-06-03 13:30:46

标签: javascript php jquery codeigniter

我正在编写一些代码。这是我的代码

jQuery

duration = 30;
var countdown = setInterval(timer,1000);
var url = window.location.origin + '/pro/index.php/Test';

function timer(){
  duration = duration - 1; 
  if(duration<=0){
    clearInterval(countdown);
    window.location(url+'/next');
  }
}

我想重定向并运行Test/next中的函数。在next()方法中,它将确定链接的位置。 url助手也已自动添加到Loader

控制器

public $num;
public $val;

public function index(){
  // get the value from GET method
  $this->num = $this->input->get('num');
  $this->val = $this->input->get('val');
}

public function next(){
  $x = $this->num;
  $x = $x + 1;
  if($x < 4){
    redirect(site_url('index.php/Test?x='.$x/.'&num='.$this->num));
  }
  else{
    // it will redirect to another page
    // redirect(site_url('index.php/Home'));
    echo 'x = '.$x.', num = '.$this->num;
  }

(上面的代码已简化)。

该方法已运行,但URL为localhost/pro/index.php/Test/next并回显:

  

x =,num =

似乎全局属性对于从JS / jQuery调用的函数不起作用。有任何解释或解决方案吗?

2 个答案:

答案 0 :(得分:0)

您可以从视图页面访问控制器功能,也可以使用基本URL( Click here how to do it? )。 然后使用jQuery Ajax调用控制器功能。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

$.ajax({
    type: 'post', url: '<?php echo base_url("next");?>',
    data: {},
    success: function(result){
        console.log(result);
    }
});

答案 1 :(得分:0)

您需要ajax调用。 在您的查看文件中

<button class="call_ajax" name="submit">Call Ajax</button>
    <script type="text/javascript">
        $('.call_ajax').click(function(){
        var value1 = 'some data';
        var value2 = 'some data'; 
        $.ajax({
            url: '<?php echo site_url('your_controller/your_function'); ?>',
            type: 'POST',
            data: {
                key1: value1,
                key2: value2
            },
            dataType: 'json',
            success: function(url) {
            window.location.href = url;
         }
        });
    });</script>

在您的控制器中

your_function(){
    $data1 = $this->input->post('key1');
    $data2 = $this->input->post('key2');
    // do Data Processing
    // For return some data ; 
    echo "https://some-webiste-url/";

    // FOR Array

    echo json_encode($any_data_array);

}

注意:从ajax调用的controller函数将不会进行重定向。如果要定向到其他URL,则必须在Javascript部分使用

进行操作。