如何在Codeigniter中的视图中将值从控制器传递给jquery

时间:2019-01-14 05:16:05

标签: jquery codeigniter

我正在使用框架codeIgniter学习网络编程,我尝试将值从控制器中的函数发送到视图中的查询脚本。 这是我控制器上的代码:

public function passData(){
        $pass = "the new value";
        return $pass;
    }

视图中的代码:

<h3 id="tesrow">the value I want change</h3>

<script type="text/javascript">
    $(document).ready(function() {
        $('#btn-filter').click(function(){ //button filter event click
            table.ajax.reload(),  //just reload table
            $('#tesrow').text({
                "ajax": {
                    url : "<?php echo site_url("main/passData") ?>",
                }
            })
        });
    });
</script>

我尝试使用按钮更改视图中的值,但仍然失败。 谢谢你的帮助

4 个答案:

答案 0 :(得分:0)

我建议您先阅读documentation,但这应该可以解决您的问题:

   // The jQuery 
   $(document).ready(function() {
        $('#btn-filter').click(function() {
            let $this = $(this);
            $.ajax({
                url: '/myController/myFunction',
                type: 'POST',
                dataType: 'text',

                beforeSend: function() {
                    $this.prop('disabled', true);
                },
                success: function(data) {
                    if(data) {
                        $this.text(data);
                    }
                },
                complete: function() {
                    $this.prop('disabled', false);
                }
            });
        });
    });

    // The PHP function
    public function myFunction() {
        $pass = "the new value";
        echo $pass;
        return;
    }

答案 1 :(得分:0)

在控制器

   public function passData(){
        $pass = "the new value";
        echo "<p>".$pass."</p>";
    }

和您的脚本。

   <script type="text/javascript">
      $('#btn-filter').click(function(){ 
        $( '#tesrow' ).load( "<?php echo site_url("main/passData") ?>" );
      });
    </script>

尝试这个..

controller扩展类ci_controller ..所以您不能在controllers方法中返回字符串.. return用于更改方法名称..

答案 2 :(得分:0)

在您的ajax中使用base_url。这些参数的值将来自控制器。

function method_name(parameter, parameter, that) {
    $.post(base_url + "controller/method_name", {parameter: parameter_name, parameter: parameter_name}, function (data) {

}

答案 3 :(得分:0)

尝试:

1. Javascript

<script type="text/javascript">
$(document).ready(function() {
    $('#btn-filter').click(function(){ //button filter event click
        table.ajax.reload(),  //just reload table
        $.ajax({
           url: "<?php echo site_url("main/passData") ?>",
           type: "POST",
           dataType: "json",
           success: function(data) {
               $('#tesrow').text(data.result);
           }
        });
    });
});
</script>

2。控制器

public function passData(){
    $pass = "the new value";
    echo json_encode(array("result" => $pass));
}