2013-07-02 35 views
0

我有一个将值插入数据库的函数。一切都很顺利,但我陷入了Ajax进程,以显示插入到表的新行中的当前值。我无法找到显示或回显值的方法。我需要立即帮助。可以找出我应该添加的内容。
如何回显值为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

<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> 
+1

请在调用'console.log(result);'后发布你在成功方法中获得的东西! –

+0

我什么都没有得到..coz我couldnot弄清楚如何回声console.log(结果)的值; @PalashMondal – Rozer

+0

当你在你的客户端调试器中检查它时,''echo'test';'不会显示在'result.data'中? – Mentok

回答

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

+0

谢谢你这有助于我稍微,但我怎么能显示在最后一行..我下面的代码不工作因为它 – Rozer

+0

检查答案我会张贴为... –

0

jQuery的需要json_encode($result)你的结果在您的控制器。

和jQuery的Ajax请求需要以JSON格式类似这样的

dataType : 'json' 

我认为这将有助于返回结果。

+0

但我怎么能得到的价值编码..向我展示一些方式 – Rozer

+0

你可以使用,因为你以前在成功功能 –

1
$.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; 
     }); 

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