将变量传递给javascript,codeigniter

I am not able to pass a variable from Codeigniter's view to controller and then model that shoots the query that is required to fetch the data from database.

here's my Controller(snippet):

public function read() {
        echo json_encode( $this->random_model->getAll() );
}

Model:

 public function getAll() {

    $id = $this->input->post('id');
            $id = intval( $id );
   // print_r($sg_id);

  //  var_dump($sg_id);


    $query = $this->db->where('id',$id)->limit( 100 )->get( 'table_name' );



    if( $query->num_rows() > 0 ) {
        return $query->result();
    } else {
        return array();
    }
}

I'm sending the "$id" from another function :

function test1()
{

    $blaa['id'] = $this->input->post('id');

    if ($query = $this->model_name->getAll($blaa)) 
    {
        $blaa['records'] = $query;
    }

    //$this->model_name->getAll($blaa);
    $this->load->view('view_name', $blaa);

}

this is the test1 view:

<?php $attributes = array("class" => "", "id" => "", "name" => "");

   echo form_open("test/test1/", $attributes);?>

<input type="text" id="id" name="id" >

<?php echo form_submit('submit', 'Submit')?>

    <?php echo form_close(); ?>

this is the view_name that shows all the data, I'm using dataTables.:

All.js that is rendered in the view_name (read data snippet):

var readUrl   = 'index.php/controller_name/read'

function readUsers() {
//display ajax loader animation
$( '#ajaxLoadAni' ).fadeIn( 'slow' );

$.ajax({
    url: readUrl,
    dataType: 'json',
    success: function( response ) {

        for( var i in response ) {
            response[ i ].updateLink = updateUrl + '/' + response[ i ].id;
            response[ i ].deleteLink = delUrl + '/' + response[ i ].id;
        }

        //clear old rows
        $( '#records > tbody' ).html( '' );

        //append new rows
        $( '#readTemplate' ).render( response ).appendTo( "#records > tbody" );

        //apply dataTable to #records table and save its object in dataTable variable
        if( typeof dataTable == 'undefined' )
            dataTable = $( '#records' ).dataTable({"bJQueryUI": true});

        //hide ajax loader animation here...
        $( '#ajaxLoadAni' ).fadeOut( 'slow' );
    }
});

The results that I get are only of the data having the id "0" , no matter which value I send through the test controller.

doutuan4361
doutuan4361 在ajax你没有传递价值..
接近 5 年之前 回复

3个回答

Change your model code to this :

 public function getAll($id = null) {
    if ($id == null)
        $id = $this->input->post('id');
    $id = intval( $id );
   // print_r($sg_id);

  //  var_dump($sg_id);


    $query = $this->db->where('id',$id)->limit( 100 )->get( 'table_name' );



    if( $query->num_rows() > 0 ) {
        return $query->result();
    } else {
        return array();
    }
}
duanchandun1860
duanchandun1860 我仍然得到只有“0”作为id的数据
接近 5 年之前 回复

Try this

function getAll(id)
    {

        var id = id;

        $.ajax({
            url:"<?php echo site_url('controllerName/getAll');?>/"+id,
            success:function(data)
            {

            alert(data);

            }

            });
        }


<a href="javascript:void(0)" onclick="getAll(1)"  title="Delete" class="icon-2 info-tooltip">Get All</a>

In your controller try to fetch id like this

public function getAll($id)
{

  echo $id;
}

for more try this : http://w3code.in/2015/10/how-to-edit-delete-and-update-data-without-refreshing-page-in-codeigniter/

doushihu5475
doushihu5475 为此你需要在getAll onclick函数中保存id,就像这样onclick =“getAll('你的id在这里')”
接近 5 年之前 回复
dtsi9484
dtsi9484 问题是,如果我没有传递我自己的$ id,我可以获得所有数据,但我只想要具有特定id的数据。
接近 5 年之前 回复
doujie2356
doujie2356 好的,试试这个w3code.in/2015/10 / ...所有内容都用datatable详细解释
接近 5 年之前 回复
dongmu2174
dongmu2174 我无法在控制器中回应它,因为数据是由datatables.js提取的,并且它将继续加载,因为echo $ id; 它不受支持。
接近 5 年之前 回复
dq23171
dq23171 好的,我再次更新了我的答案试试这个
接近 5 年之前 回复
duanquan1243
duanquan1243 我仍然得到只有“0”作为id的数据
接近 5 年之前 回复

add the id you want to post in ajax like this, Then you can use $this->input->post("id"); in model or controller.

$.ajax({
    url: readUrl,
     data:{id: id which you want to pass.}
    dataType: 'json',// change this to post
    success: function( response ) {

    }
});
dongyanfeng0546
dongyanfeng0546 另见技术keeda.com/details / ...
接近 5 年之前 回复
dougu7546
dougu7546 在控制器中尝试打印帖子值
接近 5 年之前 回复
dongyou9818
dongyou9818 等我给一些演示链接,它可能会帮助你。
接近 5 年之前 回复
douhao3562
douhao3562 试过不同的浏览器。 同样,继续加载。
接近 5 年之前 回复
dongzhanjuan5141
dongzhanjuan5141 尝试深度刷新并尝试一次。 可能是因为缓存。
接近 5 年之前 回复
douxiaomang5640
douxiaomang5640 嗯,事实并非如此。
接近 5 年之前 回复
dporb84480
dporb84480 帖子应该有用,因为你正在从帖子中获取值。 只需刷新页面然后重试即可。
接近 5 年之前 回复
donglikuang8145
donglikuang8145 如果我将其更改为POST,它会继续加载
接近 5 年之前 回复
duan01203
duan01203 你正在使用json,将其更改为POST
接近 5 年之前 回复
dqyuipw44576
dqyuipw44576 在你的代码数据中:{id:你要传递的id。}我试图发送一个像数据一样的默认值:{id:2}仍然没有运气
接近 5 年之前 回复
douluozhan4370
douluozhan4370 编辑你的代码并告诉我们你如何传递id ..
接近 5 年之前 回复
doujiao1814
doujiao1814 我仍然得到只有“0”作为id的数据
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问