PHP ve ajax hiçbir güncellemesi gerçekleşiyor

5 Cevap php

Ben, bu gibi görünen bir bir ajax isteği var

$('input.fakecheck').click(function(){
alert("deleteing....");
$.ajax({
    url:"/search",
    type:"POST",
    data: $(this).attr('name')+"="+$(this).attr('value')+"&remove=Remove",
    success:function() {
        alert(data);
    }
})

})

Bu şöyle bir php işlevini çağırır,

private function _remove_from_short_list($cv_array)
    {
        if (is_array($cv_array))
        {
            $short_list = $this->session->userdata('short_list');
            $new_list = array_diff_key($short_list, $cv_array);
            $this->session->set_userdata('short_list', $new_list);

        }
    }

Essentiallty ne olur sayfamda ben aslında id almış bulunuyor oturumu üzerinden bir listesi bir liste olması, kullanıcı daha sonra tıklama ve giriş ile bunların oturumdan id silin (bu değişecek) olabilir. Silme ben elle yenilemek kadar, şu anda hiçbir şey olmuyor, yer aldığını göstermek için listeyi yenilemek için muktedir istiyorum yer almıştır Ancak bir kez.

5 Cevap

Genellikle listesini değiştirmek için başarı fonksiyonu şey ateş etmek isteyeceksiniz.

Böyle bir yapıya sahip olmadığını söylemek

<ul>
    <li>
        <input id="1" type="checkbox" class="fakecheck" />
    </li>
    <li>
        <input id="2" type="checkbox" class="fakecheck" />
    </li>
</ul>

Eğer silme işlemini yaptıktan sonra başarı fonksiyonu, sen li kaldırabilirsiniz

$(this).parent().remove()

Bu tabii ki dikkate AJAX isteği işleme herhangi bir hata almaz. Listenizde için HTML sonrası olabilir Ben de değiştirmek için çalışıyoruz yapısı için daha iyi bir fikir alabilir.

Sivri bahseder gibi, bunun yerine güncellenmiş bir listesi getiriliyor, yerine listesini değiştirmek için gidiyoruz eğer ettik sunucu isteği aslında öğeyi sildi emin olmak gerekir.

Peki, sen listenin güncellenmiş bir sürümünü geri göndermek, ve sonra "başarı" fonksiyonundaki bir şey yapmak zorunda gidiyoruz. Sen could, istemci tarafında kod (JavaScript) uygun eylemi var, ama "gerçeklik" yaşadığı sunucu çünkü bu güncellemeyi geri göndermek için muhtemelen sunucu için daha iyi.

Kabul edilebilir ise, o zaman sadece javascript başarı işlevi içinde bir sayfa yenileme yapabilirsiniz.

yerine bir sayfa yenileme yerine, tarayıcıda HTML güncellemek için JS ikinci bir işlevi diyebiliriz. Böyle bir işlev, hedef kimliği ve PHP çıkışları HTML göndermek:

function  HandleResponse(response, target)
{
  document.getElementById(target).innerHTML = response;
}

Silme ben elle yenilemek kadar, şu anda hiçbir şey olmuyor, yer aldığını göstermek için listeyi yenilemek için muktedir istiyorum yer almıştır Ancak bir kez.

PHP ile sayfa bina gibi geliyor, yani PHP JavaScript aracılığıyla eklenen bir davranış katmanı vardır HTML üretir. Eğer güncellenmiş olması gerekiyordu bir onay kendi sürümünü uyguluyorsanız, HTTP istek bittiğinde JavaScript (ajax.success function callback) UI güncellemeleri dikkat emin olun.

Benim kişisel önerim: PHP dışarı sayfa binayı taşımak ve JavaScript olmadığını sayfa yük üzerinde veya bir Ajax isteği bir yanıt üzerine, yerine onu yapalım, ve PHP de bu geçerli oturum id adlı bir listesini döndürmek gibi daha basit bir şey yapalım kontrol edilmelidir.