Bu örnekte CodeIgniter ile çalışmak için jQuery / Ajax almak için en iyi yolu nedir?

2 Cevap php

Ben CodeIgniter ve jQuery ajax işlevselliği üretmeye almaya çalışırken bir sorun var. JQuery öğrenme, tüm gün kodlama ve genellikle benim popo tekme elde edilmiştir. Bana durumu yıkmak edelim ve umarım birisi bana yardım etmek cesaret olacak.

Ben bir sayfada çok sayıda bilet görüntüleyen bir sorun bilet sistemi var ... Her bilet şöyle divlere çok sayıda iç içe olduğunu:

<div class="eachticketwrapper" id="ticket-362">
   <div class="actionlog">
        <form action="<?= base_url();?>admin/updateticket/362" method="post" id="362" name="362">
           <ul class="displayinline">
           <p>Action Log:
           <span class="actionlog-362">
                <?php echo $actionlog; ?>
            </span>
            </p>
   </div> <!--actionlog-->
            <p>
        <textarea name="actionlogbox362" cols="100" rows="2" id="actionlogbox362" style="" ></textarea>
        </p>
            <div class="finalbuttons">
                <?php echo form_open('admin/updateticket/'.'362'); ?>
            <li><?php 
                            $attrib = "class='updatebutton-362' id='updatebutton-362'";
                            echo form_submit("RapidTask",'Update',$attrib); //setup the button, and set permissions. ?></li>
                <?php echo form_close(); // close the form. ?>
             </div> <!--finalbuttons-->
</div> <!--eachticketwrapper-->

Çalıştırdığınızda, $ actionlog aşağıdaki gibi bir şey benzer olmalıdır:

worker - 2009-06-25 18:15:23 - Received and Acknowledges Ticket.
worker - 2009-06-25 18:15:23 - Changed Status to In Progress
worker - 2009-06-25 18:15:46 - Changed Priority to High
worker - 2009-06-25 18:15:46 - Changed Category to Network Connection Problem
worker - 2009-06-25 18:17:16 - did something

Ve o zaman şu bir textarea ve bir güncelleştirme düğmesi vardır.

İşte benim tamamlayıcı jQuery dosyasının içeriği olan:

$(document).ready(function() {
    $('.updatebutton-362').click(function()
        {
            var id = $(this).attr("id").split("-"); // Split the id value at the hyphen, and grab the ticketnum.
            $('.actionlog-'+id[1]).load('http://localhost/ci/index.php/ajaxtestc/');  // do something...
            return false; // return false so default click behavior is not followed.
        });
});

ajaxtestc denetleyicisi bu gibi görünüyor:

function index()
    {
        $data['actionlog'] = $this->m_tickets->actionLogPull(362);
        $this->load->vars($data);
        $this->load->view('content/ajaxtestform');
    }

Ve m_tickets modeli bu gibi görünüyor:

function actionLogPull($requestedNum=NULL)
    {
        $this->db->where('ticketnum', $requestedNum); // Grab only the status for the ticket requested $requestednum=NULL
        $requestedTicket = $this->db->get('tickets'); // set the initial ticket info to a variable
        $returnvalue = $requestedTicket->row('actionlog');
        return $returnvalue;
    }

Şimdi burada ... İSTİYORUM budur. Ben, işçi textarea içine yazmış bugüne kadar ne almak veritabanında mevcut günlüğünün sonuna eklemek, ve ekranda actionlog yenilemek var, güncelleme butonuna tıklayın istiyorum.

Bunu yapmak için açık bir yol ile gelemiyorum. Herkes bu süreci başlatmak nasıl bazı ışık tutabilir?

Herhangi bir yardım büyük takdir ve teşekkür peşin almaktadır.

2 Cevap

İç $('.updatebutton-362').click, için .load() satırı değiştirin (adını değiştirmek göndermek istediğiniz ne olursa olsun parametreleri ile id):

$.post('http://localhost/ci/index.php/ajaxtestc/', 
    {name: "John Doe", id: "anything"},
    function(data) {
      $('.actionlog-'+id[1]).html(data);
    }
});

Ardından ajaxtestc denetleyicisi index() herşeyin üstünde, _POST değişkenleri ayrıştırmak ve eylem günlüğünü güncelleştirmek için model ne olursa olsun işlevi diyoruz.

index() eylem tarafından görüntülenen ne olursa olsun actionlog sürede yüklenecektir.

First, your code look mess. The first tag seems unclosed, and the form_open is nested inside it. My rule of thumb to developing a web is, make it work without any javascript first. Then add javascript as better experience. In your case above, try build the form with old way, after submit, redirect to page you want. After that working well, add jquery one at a time. Use jquery form plugins to submit form. Add a simple checking in the controller to handle ajax request. I usually use json for form submit, so in controller, I will return a json_encode array to a ajax submitted form request.

Bu size yardımcı umuyoruz.