codeigniter 从 AJAX 结果显示json_encode数组

uelo1irk  于 2022-12-07  发布在  其他
关注(0)|答案(3)|浏览(131)

我有这个结果
{"policy":[{"id":"1","policy_name":"Policy 1","description":"Testing","status":"Active","valid_until":"2022-05-18","tags":"Test","active":"0","date_added":"2022-05-18 05:36:02"}]}
我想显示数组中的policy_name,我尝试使用此alert(response['policy'].policy_name);向它发出警报,但出现错误。
43:4801 Uncaught TypeError: Cannot read properties of undefined (reading 'policy_name')

已更新

这是我的全部代码:

*** AJAX 技术***

$("*[id^='pol_action']").each(function() {
            $(this).change(function(){ 
                var value = $(this).val();
                var id = $('option:selected', this).attr('r-id');
               

                if($(this).val() == 'edit')
                {
                    $.ajax({
                        url: "<?php echo base_url();?>admin/leads/getPolData",
                        type: "POST",
                        data: {id: id},
                        success: function(response){
                            
                        $('#update_policy_modal').modal('show');
                            alert(response['policy'].policy_name);
                            console.log(response);
                        },
                            error: function(data){
                                console.log('error');
                            }
                    });
                }
                else if ($(this).val() == 'delete')
                {
                    
                }
            });
        });

控制器

public function getPolData()
    {
        $id = $this->input->post('id');
        
        $policy = $this->leads_model->getDataPol($id);
        $this->page_data['policy'] = $policy;

        echo json_encode($this->page_data);
    }

型号

public function getDataPol($id)
    {
        $where = array(
            'id'       => $id,
          );

        $this->db->select('*');
        $this->db->from('tblpolicies');
        $this->db->where($where);
        $query = $this->db->get();
        return $query->result();
    }

我可以尝试哪些方法来解决此问题?

ryoqjall

ryoqjall1#

您可以尝试添加dataType:“JSON”,这样就不必像下面这样解析JSON了。然后,你可以尝试循环遍历数据数组:

$.ajax({
   url: ...,
   type: "POST",
   data: {id:id},
   dataType: "JSON"
   success: function(data){
      $.each(data, function(key, value){
          alert(value.policy_name);
      });
   }
});
8ljdwjyq

8ljdwjyq2#

您正在访问一个数组,因此它应该是:

response['policy'][0].policy_name
bprjcwpo

bprjcwpo3#

在 AJAX 调用中,尝试json解析,然后警告字段:

$.ajax({
          url: "<?php echo base_url();?>admin/leads/getPolData",
          type: "POST",
          data: {id: id},
          success: function(response){
                $('#update_policy_modal').modal('show');
                var obj = $.parseJSON(response);
                alert(obj.policy[0].policy_name);
                console.log(response);
          },
          error: function(data){
                console.log('error');
          }
      });

我编辑了答案,下面是Javascript:

var json = '{"policy":[{"id":"1","policy_name":"Policy 1","description":"Testing","status":"Active","valid_until":"2022-05-18","tags":"Test","active":"0","date_added":"2022-05-18 05:36:02"}]}';

const obj= JSON.parse(json);

console.log(obj.policy[0].policy_name);

相关问题