【问题标题】:how to use $.each to iterarte rows in jquery如何使用 $.each 来迭代 jquery 中的行
【发布时间】:2017-05-15 06:15:14
【问题描述】:

我是 CodeIgniter 的新手我从这个控制器获取数据 控制器:

public function selectAll(){
        $this->load->model('EmpModel');
        $res=$this->EmpModel->selectAll();
        if(count($res) > 0){
            echo json_encode(Array("success"=>"1"));
        }else{
            echo json_encode(Array("success"=>"0"));
        }
    }

我想使用 $.each() 在视图中显示它 观点:

<table id="t_id">
        <tr>
            <th>id</th>
            <th>name</th>
            <th>email</th>
            <th>pass</th>
        </tr>
        <tbody>
    </table>
<button type="button" id="subBtn11"  >CLICK</button>
$("#subBtn11").click(function (){
    alert("ok");
   $.ajax({
      url:"<?php echo base_url('index.php/EmpCon/selectAll')?>",
      method:"get",
      dataType:"json",
      data:{

      },
      success:function (data){

          var arr=[];
         var trHTML = '';
              if(data.success==1){  
        $.each(data, function (i, item) {

            trHTML += '<tr><td>' + data.id[i] + '</td><td>' + data.name[i] + '</td><td>' + data.email[i]+'</td><td>'+data.password+'</td></tr>';
        });

        $('#t_id').append(trHTML);
        }else{
        alert("wrong");
        }
      },
      error:function(msg){
      alert(msg.responseText);
      }
   }); 
});

我用谷歌搜索了这个查询,但没有得到任何令人满意的解释。提前致谢。

【问题讨论】:

  • 你只是通过ajax返回成功键而已。

标签: jquery ajax codeigniter


【解决方案1】:

我已经为$.each 创建了示例请检查:https://jsfiddle.net/erwzpvok/

您可以更改下面的控制器文件以获取数据:

//Considering $res contain your data array.
$json = array("status" => "1", "data" =>$res);

echo json_encode($json);

然后在下面尝试:

    var trHTML = '';
      // it might be data.data as per controller.
    $.each(data, function(i, item) {
// add all other fields, that you want to show in below trHTML.
      trHTML += '<tr><td>' + item.Id + '</td><td>' +item.Name + '</td></tr>';

    });

     $('#t_id').append(trHTML);

【讨论】:

  • $.each 不起作用。我做了 data['name'],data['email'] 然后它显示未定义的表数据。但在这种情况下什么都没有。
  • 完成。我做了 item['name'],item['email']...name,email 是我在数据库表中的列。感谢您的帮助
  • 完成 vijay。再次感谢您的帮助。我不知道控制器更改。
  • 如果您需要控制器方面的更多帮助,请告诉我。我很乐意在这里提供帮助。
  • 肯定的。如有任何疑问,我会发布
【解决方案2】:

尝试如下,但您没有从控制器返回对象。

$.each(data, function (i, item) {

            trHTML += '<tr><td>' + data[i].id + '</td><td>' + data[i].name + '</td><td>' + data[i].email+'</td><td>'+data[i].password+'</td></tr>';
        });

【讨论】:

  • $.each 不起作用。我做了 data['name'],data['email'] 然后它显示未定义的表数据。但在这种情况下什么都没有。
【解决方案3】:

成功为 1 时在控制器中传递数组

 public function selectAll(){
        $this->load->model('EmpModel');
        $res=$this->EmpModel->selectAll();
        if(count($res) > 0){
            echo json_encode(Array("success"=>"1","ss"=>$res));
        }else{
            echo json_encode(Array("success"=>"0"));
        }
    }

在$.each()中访问ss数组

$.each(data.ss, function (i,item) {

           // trHTML += '<tr><td>' + data[i].id + '</td><td>' + data[i].name + '</td><td>' + data[i].email+'</td><td>'+data[i].password+'</td></tr>';
            trHTML += '<tr><td>' + item['id'] + '</td><td>' + item['Name'] + '</td><td>' + item['email']+'</td><td>'+item['password']+'</td></tr>';
        });

一切正常

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-24
    • 2010-12-14
    • 2012-10-17
    • 2012-01-21
    • 2015-09-21
    • 1970-01-01
    • 2016-02-18
    相关资源
    最近更新 更多