ugrás a tartalomhoz

ajax + több válasz egy kérelemre lehetséges?

avus · 2007. Ápr. 27. (P), 00.33
Sziasztok. Szóval van két blokk az oldalon. Az egyik blokk egy részletes lista valamiről, a másik blokk csak egy rövidke összefoglaló. Ajax-kérelemmel változtatok valamit a listán, ez természetszerűleg módosítani fogja mindkét blokk tartalmát. Két egymás utáni kérelemmel ezt persze megoldom, de szeretném ha egy kérelem lenne csak, és így frissülne mindkét blokk innerHTML-je. Megoldható ez?
 
1

Ha a tartalmak változása logikailag nem függenek egymástól.

s_volenszki · 2007. Ápr. 27. (P), 07.30
Ha a tartalmak változása logikailag nem függenek egymástól, akkor semmi akadálya annak, hogy request után megmódosúljon mindkettő.

Most így működik:

Kérés_1:blokk_1 új tartalmát kérem => Válasz_1:Blokk_1 tartalma => Blokk_1 tartalom módosítás
Kérés_2:blokk_2 új tartalmát kérem => Válasz_2:Blokk_1 tartalma => Blokk_2 tartalom módosítás

Helyette:

Kérés_1_2:kérem a blokk_1 és blokk_2 új tartalmát => Válasz_1_2:Blokk_1 és blokk_2 tartalma => Blokk_1_2 tartalom módosítás

Nem tudom, használsz-e JSON-t a válasz adatok formázására, ezzel az eljárással, akár 10 blokk tartalmát is módosíthatod egy lekérdezéssel.

Remélem kaptál választ a kérdésedre, üdv:
s_volenszki
2

Másképp

csla · 2007. Ápr. 27. (P), 14.13
Tudom, vannak összetettebb módszerek, de én pl. nagyon egyszerűen azt csinálom, hogy a php egy (szerializált) tömböt ad vissza. A tömb úgy néz ki, hogy a kulcs tartalmazza a módosítandó elem ID-jét, a hozzá tartozó érték pedig egy tömb, ami tartalmazza a módosítandó tulajdonságot, és az új értéket. A javascript aztán végigmegy ezen a tömbön, és sorban elvégzi a módosításokat. Így tetszőleges számú elem, és egy elem tetszőleges számú tulajdonsága módosítható, illetve bizonyos kulcsszavakat használva az ID helyett indíthatok másik folyamatokat, akár automatikusan új kérést is.
Példa egy válasz tömbre:

Array
(
    [divEgyik] => Array
        (
            [innerHTML] => Ez az új tartalom (a div sárga is lesz)
            [style.background] => #fad060
        )

    [divMasik] => Array
        (
            [innerHTML] => Ez a másik új tartalom
        )
)