如何在表行中显示ajax结果

时间:2013-07-02 10:20:45

标签: jquery ajax codeigniter

我有一个将值插入数据库的功能。一切进展顺利,但我陷入了ajax进程,以显示插入到表的新行中的当前值。我无法找到显示或回显值的方法。我需要立即帮助。可能有人想出我应该添加什么。
如何回显ajax结果的值以显示在新行中。

这是我的模态..

    public function pinsert() {
    $amount = $this->input->post('amount');
    $paid_date = $this->input->post('paid_date');
    $project = $this->input->post('e1');

    $data = array(
        'paid_date' => $paid_date,
        'amount' => $amount,
        'pro_id' => $project
    );
    $this->db->insert('payment', $data);
   }

我的控制器

public function payment_insert() {
        $this->load->model('payment_model');
      $feed= $this->payment_model->pinsert();
      }

最后我的jquery为ajax

  <script>
        $(document).ready(function() {
                   $(".btn-primary").live('click',function(){
               var post_data=$('.modal-body').find('input,select').serialize();
              // var select=$('select').val();
                 $.ajax(
                    {
                        url: "<?php echo site_url("payment/payment_insert"); ?>",
                        type: 'POST',
                        data: post_data,
                        success: function(result)
                        {
                        // console.log(result);
                             var $tr = $('<tr/>');
$tr.append($('<td/>').html(result.p_id));
$tr.append($('<td/>').html(result.project_title));
$tr.append($('<td/>').html(result.amount));
$tr.append($('<td/>').html(result.paid_date));
$tr.append($('<td/>').html(result.pro_id));
$('.table tr:last').before($tr);
                           //$('#table').html('<tr><td>'+result+'</td></tr>');
                        }
                    });

            return false;
            });

        });
    </script>

4 个答案:

答案 0 :(得分:2)

$.ajax({
                    url: "<?php echo site_url("payment/payment_insert"); ?>",
                    type: 'POST',
                    data: post_data,
                    dataType: 'json',
                    success: function(result)
                    {
                     //console.log(result);
                      $.each(result,function(key,value){
                         var NewRow = '<tr><td">'+value.p_id+'</td>';
                             NewRow += '<td>'+value.project_title+'</td>';
                             NewRow += '<td>'+value.amount+'</td>';
                             NewRow += '<td>'+value.paid_date+'</td>';
                             NewRow += '<td>'+value.pro_id+'</td>';
                             NewRow += '</tr>';

                             $(".table").append(NewRow);
                      });
                    }
                });

        return false;
        });

我希望这能解决你的问题。当你追加一个新东西时,它会自动结束

答案 1 :(得分:1)

检查此链接

Using jQuery and ajax with Codeigniter

并记住一件事,没有回应你不能得到ajax数据。

答案 2 :(得分:0)

您需要在控制器中json_encode($result)结果。

并且在jquery中,ajax请求需要以json格式返回结果,如此

dataType : 'json'

我认为这会有所帮助。

答案 3 :(得分:0)

嗯,我认为你不需要从模型中返回结果为什么?因为你发送了在表单中输入的数据,所以当你通过ajax发送数据时,不要通过序列化发送整个表单。获取每个文本字段的值将其作为字符串发送,如果结果为true则显示行中的变量 但是,如果您仍希望通过模型插入记录后显示数据,而不是

public function payment_insert() {
    $this->load->model('payment_model');
    $amount = $this->input->post('amount');
    $paid_date = $this->input->post('paid_date');
    $project = $this->input->post('e1');


    $data = array(
       'paid_date' => $paid_date,
       'amount' => $amount,
       'pro_id' => $project
     );

    $feed= $this->payment_model->pinsert($data);
    print json_encode($feed);
  }

public function pinsert($data) {       
   $this->db->insert('payment', $data);
   $last_id = $this->db->last_id();//return last inserted id
   $this->db->where('id',$last_id);
   $query = $this->db->get();
   return $query->result_row();
}

你也可以只返回最后插入的id,然后通过将此id传递给它来从另一个模型函数中获取记录。 我希望它会对你有所帮助