AJAX ile işlenmiş bir sayfada tüm öğeleri güncelleştirmek için doğru yolu nedir?

4 Cevap php

PHP tarafından işlenen karmaşık bir sayfası var ve AJAX uzun yoklama aracılığıyla bugüne kadar sayfa yukarı tüm unsurları tutmak istiyorum. Güncellemek için elle her öğeyi belirtmek zorunda kalmadan bu desteklemek için bir altyapı tasarımı genel / akıllı şekilde bir tür var mı? Sadece fikirler arıyor. Teşekkürler!

4 Cevap

JQuery kullanarak, ben sunucuya güncellemek için jQuery seçicileri virgülle ayrılmış listesini gönderir. Sunucu sonuçta bu seçicileri okuma ve seçicileri eşleşen öğeleri doldurmak için HTML üreterek cevap verecektir:

$.get("/updater", { elementsToUpdate: "#someDiv,#someTable,#someOtherElement"}, function(json) {
      $.each(json, function(k, v) {

        // the key is the selector, the value is the 
        // HTML to set to that (or those) element(s):
        $(k).html(v);
      });    
}, "json"); // we are expecting the server to return JSON

Sunucu aşağıdaki yapıda müşteriye JSON göndererek yanıt verir:

 {"#someDiv":"this is some HTML to fill up div with ID someDiv","#someOtherElement":"here is some more HTML","#someTable":"here is some more HTML"}

belki ajax güncelleştirilmesi için tüm unsurları için özel bir sınıf ekleyebilir ve ayrıca örneğin bazı diğer nitelikleri ekstra verileri kodlamak

<a class="ajaxUpdate" data="{'a':'json or whatever', 'put whatever here':'ok'}">test</a>

sonra jquery ile kolayca bu verileri çekin ve eval, ve ajax kullanabilirsiniz

Keep your pages elements structure as private data and have the public elements to update them var page = (function(){ var private_data = { //json };

return { workOnData : function(){//process the data}

} })()

Bu güvenli ve pürüzsüz sayfaları verileri tutabilir iyi bir yoldur.

Size gibi sayfanızın json kodlanmış yapısı döndürür bir sayfayı yoklamak:

var page = {
    'elem1': {
        'html': '<div>... ',
        'update': True
    },
    'elen2': {
        'update': False

ve böylece, o zaman sadece bir anket olan, gerekli ne güncelleyin.