0

我有一个将值插入数据库的功能。一切进展顺利,但我被困在 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();
      }

最后是我的ajax jquery

  <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

4 回答 4

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;
        });

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

于 2013-07-03T04:58:15.230 回答
1

检查此链接

在 Codeigniter 中使用 jQuery 和 ajax

并记住一件事,如果不回显,您将无法获取 ajax 数据。

于 2013-07-02T10:32:38.860 回答
0

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

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 传递给模型的另一个函数来获取记录。我希望它会帮助你

于 2013-07-02T11:14:53.663 回答
0

你需要json_encode($result)在你的控制器中得到你的结果。

并且在 jquery ajax 请求中需要像这样以 json 格式返回结果

dataType : 'json'

我认为这会有所帮助。

于 2013-07-02T10:26:48.330 回答