打印Ajax响应已定义,但尝试在div中打印时未定义

时间:2013-03-29 08:13:06

标签: jquery ajax codeigniter

我正在使用表单。当用户点击按钮时,ajax发送该值,然后控制器加载模型和查询数据库以返回一个或一些注册表。

然而,当返回时,我得到一个响应,但它似乎从表中获取所有数据而不是做一个where子句.. 此外,我无法将此结果放入div

--model

function get($where=array()) {
   $q = $this->db->get_where('tbl_name',$where);
   $result = $q->result_array();
   return $result;
}

-- controller

function get_em()
{   
  $key = $this->input->post('key');
  $this->load->model('model');
  $data['result'] = $this->model->get_em( array('id_guy' => $key)) ;
  header('Content-type: text/plain'); 
  echo json_encode($data);
}


--jquery
$(document).ready(function() {

   $('#btn').click(function(){
   var key = $("#key").val();     
   var postData = {
    'key' : key
   };
   $.ajax({
    type: "POST",
    url: "<?php echo base_url()?>index.php/controller/get_em",
    //data: postData , 
    dataType:"json",
    data: postData,
    success: function(response) {
            $.each(response, function(index,item){
              $("#wrapper_succes").append('<div><b>' + index[0] + '</b></div><hr />');
            });
        }
    });
    });
});

如何在$query->result_array()返回时根据某些条件从数据库中选择字段的结果打印结果,因此在控制器中我理解$data['result'] = $this->model->存储在结果中所以在php中我只会循环 $ result ...但是如何使用ajax执行此操作,我无法打印任何resuLT,我只能 undefined 或[对象对象]的东西 当用firebug调试时,我可以看到响应如下:

{"result":[{"id_guy":"1","name":"joe",....,"last":"last man"}, ....

1 个答案:

答案 0 :(得分:0)

如果您的回复看起来像{"result":[{"id_guy":"1","name":"joe",....,"last":"last man"}]}

然后你有:

  • Object,其中包含Array
  • 属性“result”
  • 此数组包含具有您想要显示的属性的对象

直接在响应中使用$.each将仅使用值循环一次:

index = result;
item = [{"id_guy":"1","name":"joe",....,"last":"last man"}] 

请注意,由于项目包含object,如果您尝试将其转换为[object Object]

,则会String

这意味着您必须通过result,循环array,然后循环object属性。

给出类似的东西(Fiddle):

    $.each(response.result, function(index,item){
        $.each(item, function(index,item){
           $("body").append(index + " " + item + " ; ");
        });
        $("body").append("<BR>");
    });