CodeIgniter AJAX结果写入DIV

时间:2016-06-10 16:35:44

标签: jquery ajax codeigniter

我过去曾使用过这种方法,但从未使用过CodeIgniter。我正在努力搞清楚CI。

我对数据网格格式化的数据库结果进行了非常基本的AJAX调用。

在控制台中观看,预期结果显示出来,但我无法弄清楚为什么它不会写入我的<div>。 (我确实收到了您在下面.complete中看到的提醒)

jQuery的:

    var myOnload = function(){
    $.ajax({
        url: 'http://contacts.drumichael.xyz/contacts/load_contacts',
        type: 'post',
        dataType: 'json',
        data: {get_it: 'yes'},
    }).complete(function(data) {
        $(".the_list").html(data);
        alert('done');
    });
};
myOnload();

控制器如下所示:(简化)

public function load_contacts() {
    $query = $this->db->query("SELECT * FROM contacts_list");
    $array = $query->result();

    $return = '';

    $return .= '<div class="panel-heading text-right"><a href="" class="btn btn-sm btn-primary btn-new"><i class="fa fa-plus"></i>&nbsp; &nbsp;New Contact</a></div>';
    $return .= '<table class="table table-striped table-hover">';
    $return .= '    <thead>';
    $return .= '        <tr>';
    $return .= '            <th></th>';
    $return .= '            <th>Last Name</th>';
    $return .= '            <th>First Name</th>';
    $return .= '            <th>Cell</th>';
    $return .= '            <th>Home</th>';
    $return .= '            <th>Address 1</th>';
    $return .= '            <th>Email</th>';
    $return .= '            <th>URL</th>';
    $return .= '            <th></th>';
    $return .= '        </tr>';
    $return .= '    </thead>';
    $return .= '    <tbody>';

            if(!empty($array)) {    
                foreach($array as $row) {
                    $return .= '<tr>';
                        $return .= '<td><i class="fa fa-pencil"></i></td>';
                        $return .= '<td>'.$row->lname.'</td>';
                        $return .= '<td>'.$row->fname.'</td>';
                        $return .= '<td>'.$row->phone1.'</td>';
                        $return .= '<td>'.$row->phone2.'</td>';
                        $return .= '<td>' .$row->address1. ' ' .$row->city.', ' .$row->state. ' ' .$row->zip. '</td>';
                        $return .= '<td>'.$row->email.'</td>';
                        $return .= '<td>'.$row->url.'</td>';
                        $return .= '<td><a href="" class="btn-delete" data-rec-id="'.$row->id.'"><i class="fa fa-trash"></i></a></td>';
                    $return .= '</tr>';
                }
            } else {
                $return .= '<tr><td colspan="9">You don\'t have any contacts yet! Why not create some?</td></tr>';
            }


        $return .= '</tbody></table></div>';


    echo $return; 
}

在视图中,我有<div class="the_list"></div>,但它永远不会被HTML取代。就像我之前说的那样,我可以在Firefox的控制台的响应部分看到HTML。关于我出错的任何想法?

1 个答案:

答案 0 :(得分:2)

问题不是特定于代码Igniter,即ajax调用中的问题。 您正在使用.complete方法,该方法将返回XMLHttpRequest对象。
因此,在您的情况下,您可以使用`

  

data.responseText

它将返回已回复的文本。所以,修改后的代码将是。

    $(document).ready(function() {
        var myOnload = function(){
          $.ajax({
             url: 'http://contacts.drumichael.xyz/contacts/load_contacts',
             type: 'post',
             dataType: 'json', // need not to specify if you are not returning json 
             data: {get_it: 'yes'},
          }).complete(function(data, xhr, settings) {
            $(".the_list").html(data.responseText);
            alert('done');
          });
       };
     myOnload();
   });