【问题标题】:JSON and jQuery listviewJSON 和 jQuery 列表视图
【发布时间】:2014-08-25 20:43:03
【问题描述】:

我正在尝试将行(将匹配格式)从 json(来自响应)添加到 listview:

results : { _id: 53f8c48ddc1f5f0419f2ed53,
  bName: 'Microsoft',
  phone: 35588319,
  Email: 'microsoft@gmail.com',
  field: 'QA',
  exp: '0-2',
  __v: 0,
  location: [ { longitude: 7.8, latitude: 7.8, _id: 53f8c48ddc1f5f0419f2ed54 } ] }end

我的桌子是:

<table summary="This table lists all the Jobs." cellpadding="40" cellspacing="40" vspace="40">
    <caption id = "jobsListView" >
        JOBS
    </caption>
    <thead>
        <tr>
            <th scope="col">Company Name</th>
            <th scope="col">Contact</th>
            <th scope="col">Email</th>
            <th scope="col">Field</th>
            <th scope="col">Exp</th>

        </tr>
    </thead>
    <tbody>
        <!-- every row = a row in the file 
        <tr>
            <th scope="row">Microsoft</th> // comapny name
            <td>0508558319</td> // contact
            <td>Microsoft@mcsf.com (JFK)</td> // email 
            <td>QA (JFK)</td> // field 
            <td>0-2 (JFK)</td> // exp
        </tr>

       -->
    </tbody>
</table>

所以 bName = 公司名称,电话 = 联系人...没有位置。

我通过 ajax 发送\rec:

$.ajax({
      type: 'GET',
      dataType: 'JSON',
      url:'http://localhost:3000/find',
      data: workerInfo, 
     success: function(jobs){
      }
    });

【问题讨论】:

  • 你的问题是什么?
  • 如何根据json文件向我的表中添加行? (bName = company name , contact = phone ...) ,只是如何将行添加到列表视图。
  • 你得到的响应是对象数组吗?
  • 不,我得到了如上图所示的 json(结果)。
  • 是的,但是返回的 JSON 是否具有数组对象,即 [{},{}.{}] 或只有单个对象? {}?

标签: jquery html ajax json


【解决方案1】:

假设响应是对象数组 -

var $body = $("table tbody"); //select table (change ID / class if required anad locate to tbody)
$.ajax({
      type: 'GET',
      dataType: 'JSON',
      url:'http://localhost:3000/find',
      data: workerInfo, 
      success: function(response){ 
          var jobs = JSON.parse(response); //parse the response.
          $.each(jobs, function(j, e) { //every object represents row so iterate thru it
              //generate table row 
              var row='<tr>';
              row+='<td>'+e.bName+'</td>';
              row+='<td>'+e.phone+'</td>';
              row+='<td>'+e.Email+'</td>';
              row+='<td>'+e.field+'</td>';
              row+='<td>'+e.exp+'</td>';
              row+='</tr>';   
              $body.append(row); //Append it to tbody
          });
      }
});

如果响应是单个对象 -

var $body = $("table tbody"); //select table (change ID / class if required anad locate to tbody)
$.ajax({
      type: 'GET',
      dataType: 'JSON',
      url:'http://localhost:3000/find',
      data: workerInfo, 
      success: function(response){ 
          var jobs = JSON.parse(response); //Parse the response
              //generate table row 
              var row='<tr>';
              row+='<td>'+jobs.bName+'</td>';
              row+='<td>'+jobs.phone+'</td>';
              row+='<td>'+jobs.Email+'</td>';
              row+='<td>'+jobs.field+'</td>';
              row+='<td>'+jobs.exp+'</td>';
              row+='</tr>';   
              $body.append(row); //Append it to tbody
      }
});

希望对您有所帮助!

【讨论】:

  • 谢谢你,我现在就试试!
  • 仍然不起作用..我试图将 $body 选择器更改为 var $body = $("#tbody"); 上的 id,仍然没有结果。
  • $body = $("#tbody") 是否找到对象,尝试控制台记录它?
  • 另外,控制台在追加行之前记录row..告诉我它是什么!
  • 这就是 console.log 输出:[tbody#tbody,prevObject:b.fn.b.init[1],上下文:文档,选择器:“tbody”,jquery:“1.9.1” , 构造函数: function...] 0: tbody#tbody context: 文档长度: 1 prevObject: b.fn.b.init[1] 选择器: "tbody" proto: Object[0]
猜你喜欢
相关资源
最近更新 更多
热门标签