AJAX ve en iyi nasıl PHP, sunucu tarafı ile başa çıkmak için

6 Cevap php

Ben epeyce ajax ağır et yazmaya başlıyorum, ama gerçekten en iyi uygulamalar üzerinde okumak hiç ettik ve şimdi ben istiyorum ki çok ben bilmek istiyorum adresi bir yazı bulamıyorum. Gerçekten AJAX tek bir işlev için iki karıştırmak değil denemelisiniz .. gibi şeyler, tüm veri JSON / XML kullanarak geri kabul edilmelidir, sunucu tarafında aramaları veya saf HTML ince ile uğraşıyor hakkında öğrenmek istediğiniz ne sonucuna bağlı olarak arayın. Ayrıca, CodeIgniter'ı (MVC framework) kullanarak çoğunlukla programı olarak AJAX sonuçlarından normal sayfa yükleme isteklerini bölünmesi hakkında nasıl iyi gidiyor.

AJAX web siteleri yapmak, ama ben gerçekten bilmek istiyorum istiyor olabilir insanlar biraz ışık tutmak ya da ben onu çok takdir ediyorum bana doğru yönde işaret edebilir, bir AJAX web sitesi yapmak için en iyi nasıl olduğunu.

Thanks Tom

6 Cevap

Geçenlerde CodeIgniter'ı kullanarak bir AJAX ağır site tamamlanmış ve süreç içinde bir çok şey öğrendim. Bunlar öğrendiğim bazı şeyler (: Ben yapılan hataları okuyun) şunlardır:

Don't return html pages and json from the same method.

İlk bakışta bu bir böyle kurmak için iyi bir fikir gibi görünüyordu:

/ Denetleyici / yöntem / biçim

biçimi için varsayılan 'html' nerede. Fikir Ben o nesne için html sayfası göstermek ve bu nesne için json veri döndürmek / nesne / view / json gibi bir şey var / object / görüntüsü gibi bir şey olabilir, oldu.

Uygulamada bu işler çok dağınık hale getirir. Bunu çok daha karmaşık kod kılan tek bir yöntemle farklı işlevsellik bir sürü karıştırma sonunda. Tran.

Bunun yerine, ne şimdi ne uygulama / denetleyicileri altında bir 'api' alt ekleyin. Bu alt klasöre kontrolörler sadece json veri döndürebilir. Bu çok temiz.

Don't reimplement your templates in javascript

AJAX çağrısı yoluyla bir şeyler alınırken iki yaklaşım vardır. Sen kodlanmış veri çeşit (json, XML) iade ve sayfadaki doğru noktaya içine ekleyebilirsiniz. Yoksa html bir yığın işlemek ve sonra bir div yerde içine ekleyebilirsiniz.

Eğer veri rota, örneğin bir zaman dilimi ya da basit bir sırasız liste gibi çok basit biçimlendirme yapısı, sadık çalışın gidin. Benim durumumda, ben JSON kodlanmış bağlantılar bir dizi olarak sunucudan döndürüldü navigasyon belli bir parçası vardı.

Benim javascript sonra menü için doğru yapısında onları dışarı tükürmek. Menü daha karmaşık hale gelince benim senaryom bu karmaşıklığı dahil. Şimdi o menü için biçimlendirme CI şablonları yanı sıra javascript yineleniyor.

Bu durumda sunucu yerine istemci üzerindeki verilerden inşa çalışırken menü biçimlendirme içeren html bir yığın geri dönmek için daha iyi olurdu.

Use AJAX sparingly/carefully/only as needed

Eğer akıllıca AJAX istekleri ile bazı sunucu kaynaklarını kaydedebilirsiniz. Eğer kapılmak Ancak, (* coughlikemecough *) hızla kullanıcı eylem başına birkaç AJAX istekleri çalıştıran kendinizi bulabilirsiniz. Her istek havai payına sahip ve bu yükü yalnızca gerekli kaynakları isteyen bir fayda inkâr edecek gibi bu bir performans açısından genellikle kötüdür.

Bir arabirim öğesi tıklayarak ne oluyor hakkında sert düşünmek için bir kırmızı bayrak birden fazla AJAX isteği tetikler bulursanız. Sen parası olmadan karmaşıklık yaratıyor olabilir.

JSON encoding is nice

Sen json_encode yapabilirsiniz (bir veritabanı sorgu) sonuçları ve bu sizin komut ile çalışabilirsiniz gerçekten güzel nesneleri oluşturmak olacaktır. Sözdizimi temiz ve CodeIgniter'ın db fonksiyonları dönmek sonuçları ile iyi çalışır.

Bunu yararlı bazılarını bulabilirsiniz umuyoruz. Her zaman daha iyi birisi else's hatalar öğrenebilirsiniz zaman! :)

JSON / XML or plain

Ben bir seçim kendiniz yapmak zorunda düşünüyorum. Siz XML veya JSON ya da sadece düz html kullanabilirsiniz. Ayrıca sorunun karmaşıklığına bağlıdır. PHP5 json kodlamak ve kodunu çözmek için çok basit yöntemler vardır çünkü seçim json olur.

Server-side

  • Sadece bir denetleyicisi AJAX eylemleri koymak. Kullan sunucu üzerinde veri depolamak için veri ve CodeIgniter sonrası işlevini almak için olsun.
  • Ben sitenize yıldırım hızlı çalışacağını sağlayacaktır yahoo's developer best practices bakmak için tavsiye ediyorum. Ayrıca mümkün ajax isteği önbelleğe olmalıdır.

Javascript

jquery json görüşmeleri gerçekten kolaylaştırır. Sen veri depolamak için bilgi ve Jquery.post almak için jQuery.get kullanabilirsiniz.

Example

Eğer bakmak için ben de çevrimiçi bir basit bir örnek koymak için çalışacağız.

Good luck,
Alfred Westerveld

de, tam olarak ne yapmak istediğinize bağlıdır. çünkü ajax fonksiyonlarını kullanmak için basit bir yol - kullanım jQuery çerçeve. İhtiyacınız olan her şeye sahiptir.

Kullanım Ext JS veya jQuery onlar bağlantıların yükler yaptıklarını görmek için orada sunabileceği ne bir göz var.

Bu ürünlerin bazıları Demo yıllardan baktıktan sonra muhtemelen web siteleri ile bu bazı şeyleri kullanmak için ilham kaynağı olacak.

Diğer sonra darboğazların ve Sense yapar paralel yükleme deneyin ölçüsüdür.

Bu AJAX ile ulaşmak için çalışıyoruz bağlıdır. Bir ayak izi / karmaşıklık takas normalde var.

Örneğin, bir AJAX çağrısı biçimlendirme dahil, sunucudan tüm oluşturulan HTML listesini almak ve böyle bir div gibi bir kabın içine enjekte olabilir. Bu uygulama basit, ama aşağı tarafı tarayıcıya daha fazla bayt göndermek zorunda olacaktır.

Diğer yandan, sunucu AJAX çağrısına yanıt olarak bir JSON dize göndermek ve istemci uygun biçimlendirme her bit sarın ve sayfa içinde yer olabilir. Bu daha karmaşık, ama bazı durumlarda daha uygun olabilir.

Gerçekten başarmak için çalışıyoruz ne bir 'AJAX uygulamak için en iyi yolu' düzenleyen tek genel bir kural yoktur bağlıdır.

Eğer jQuery ve CodeIgniter ile aramalar kurmak için nasıl anlamak yoksa, sadece AJAX için kullanmak url bir Controller tarafından inşa edilmiştir çağırır unutmayın. Sen bir AJAX çağrısı için bir URL oluşturmak için bir denetleyici yöntemi kullanabilirsiniz.

Daha fazla bilgi için, bu kılavuz AJAX + CodeIgniter bir intro olarak bana yardımcı oldu.

http://www.mrforbes.com/thoughts/2009/01/28/a-quick-code-igniter-and-jquery-ajax-tutorial/