Iyi - PHP komut dosyalarını çalıştırmak için Gizli IFrame kullanarak?

5 Cevap php

Ben PHP / MySQL arena için biraz yeni duyuyorum, ve geçerli sayfayı terk etmek zorunda kalmadan olayları arka planda (iframe) PHP sayfaları çalıştırmak için gizli Iframe kullanarak benim Veritabanı ile etkileşim edebilmek için bir fikrim yoktu?

İyi? Kötü? Ortak Pratik? Görüşler?

5 Cevap

Bu kötü çoğu zaman, ama bazen kaçınılmazdır.

Bunu yapmak için yaygın bir uygulama bile W3School bir article bu konuda sahip olduğu kadar yaygındır, AJAX kullanmaktır.

Iframe fazla AJAX kullanılmasının avantajları AJAX çok evreli olmasıdır. Sen IFrames uygulamak için daha zahmetli olan, üst üste birkaç istekleri gönderebilirsiniz. Eğer sayfanın HTML kazıma güvenmek zorundayız nerede IFrames, hatalarını tespit ve hata sayfanın HTML koduna bakarak doğru durumunu tespit ettik umuyoruz böylece Ayrıca, AJAX durum kodu destekler.

AJAX bir yanıt olduğunda, geri arama otomatik olarak haberdar olsun demektir, hangi tahrik fazla JavaScript idiomatic ve bir olaydır. IFrame ile setTimeout() olurdu ve kolayca kırılabilir hangi bir yanıt için oylamayı IFrame tutun.

IFrame Geçerli sayfayı terk etmeden bir dosya yüklemek istediğiniz gibi durumlarda bazen kaçınılmazdır. Sadece veritabanı etkileşimleri belirtilen beri Ama bu muhtemelen kapsam değil.

AJAX temelidir XMLHttpRequest kullanmayı öğrenin. O aşina ettikten sonra, vb jQuery, Dojo, gibi bir JavaScript framework kullanarak eğlenceli hale getirmeyi deneyin

Ben bir şey veritabanı şey yaptığında gerçekleşmesi gerekiyordu, sanırım doğru olur? Yani Lütfen sayfa, geribildirim çeşit vermek belki bir numarayı veya metin güncellemeniz gerekmektedir.

Yani zaten JavaScript kullanmak için gidiyoruz. Bu durumda, iframe atlayın ve sadece AJAX istekleri uğurlanacak.

Bu genellikle AJAX kullanılarak gerçekleştirilir. jQuery javascript kütüphanesi bu kolaylaştırır

Ben iframe kullanarak bunu gerçekleştirmek için iyi bir yol olduğunu sanmıyorum. Hala iframe konumunu değiştirmek için JavaScript etkinleştirilmelidir ve javascript varsa, neden sadece AJAX kullanmak olmaz?

Eğer iframe kullanırsanız, geçici çözümler bir sürü yapmadan herhangi anlamlı bir şekilde sunucudan bir yanıt almak mümkün olmaz. Örneğin - jQuery kullanarak, tek bir işlev çağrısı ile sunucuya bazı bilgiler gönderebilir ve bu isteği tamamlandığında sonra, bir geri çağırma işlevi sunucudan yanıt bilgi çağrılabilir:

$.post("ajax.php", { var1: "data", var2: "moredata" },
   function(data){
     alert("Server says: " + data);
   });

Istek tamamlandığında bu örnekte, bir uyarı kutusu ajax.php çıkışı ile belirir.

Bir iframe ile, bu ile server.com/iframe.php?var=data&var2=moredata&var3=moredata, daha sonra biraz bekleyin ve iframe içeriğini kapmak (bu bile mümkün olup olmadığını) ve yapılacak bir şey iframe konumunu değiştirmek gibi bir şey yapmak gerekebilir.

Söz, bunu yaparken sorunlarla çalıştırdığınızda, muhtemelen SO tavsiye isteyeceğiz değil. ve her zaman, insanlar muhtemelen "o damla ve jQuery kullanmak!" diyecek :) Yanı sıra tüm ağrı ve acı atlamak ve onunla başlamak için Doğru yapabilir

Gizli iframe yöntemi (Belki Ajax gibi bunu duymuş) XMLHttpRequest API kabulünden önce kullanıldı.

, Sadece tarihsel bir değer yıl önce rslite kullanarak eski bir uygulama kullanıyordum ama günümüzde bu tekniğin var bana.

Sen http://www.xul.fr/en-xml-ajax.html ya da, daha iyisi düz javascript Ajax teknikleri kullanarak yön alabilir, ortak bir kitaplık kullanmayı tercih edebilirsiniz, jquery veya mootools diğerleri arasında, farklı bir tarayıcıda farklı uygulamaları ile başa çıkmak için.

Yerine XMLHttpRequest (AJAX) düşünebilirsiniz.

Bu one article from 2006 Ben gizli bir iframe kullanarak yerine XMLHttpRequest avantajlarını tartışır bulundu (aynı zamanda featured on the Ajaxian). Ben bu argümanlar bugün uygulanamaz ya da ilgili değildir (ve muhtemelen de 2006 değil) olduğunu düşüncesindeyim.