« 1 2 »
Autor Zpráva
joe
Profil
Zdravím,

zajímalo by mě, jestli je k něčemu užitečné, když budu vytvářet XMLHttpRequesty buď GET nebo POST? Není to jedno? Nebo k čemu to vlastně je?

(Mám funkci, která projde formuláře a těm s třídou ajax nastaví při odesílání vytvoření požadavku a zrušení výchozí akce. Právě mě napadlo, proč vlastně rozlišuju, jestli má formulář GET/POST, když bych všechno mohl poslat třeba POSTem?)
_es
Profil
joe:
Mám funkci, která projde formuláře a těm s třídou ajax nastaví při odesílání vytvoření požadavku a zrušení výchozí akce.
A to je dobré na čo, takáto komplikácia, namiesto normálneho odoslania formulára?

Právě mě napadlo, proč vlastně rozlišuju, jestli má formulář GET/POST, když bych všechno mohl poslat třeba POSTem?
To musíš snáď vedieť ty, ktorá metóda ti pre daný účel viac vyhovuje.
joe
Profil
_es:
Myslel jsem AJAX, jestli to z toho není jasné :-)

A to je dobré na čo, takáto komplikácia, namiesto normálneho odoslania formulára?
A jak jinak poznám, který formulář chci odeslat pomocí AJAXu, a který ne?

To musíš snáď vedieť ty, ktorá metóda ti pre daný účel viac vyhovuje.
Při neAJAXovém odeslání je rozdíl jasný:
GET - uvidím adresu včetně parametrů v adresním řádku
POST - adresu neuvidím. A mohu poslat víc dat (pokud se nepletu)

Ale jaký je rozdíl při AJAXovém požadavku? Tam to rozlišovat není třeba, ne?
_es
Profil
joe:
A jak jinak poznám, který formulář chci odeslat pomocí AJAXu, a který ne?
A prečo chceš nejaký formulár odosielať pomocou AJAXu, namiesto normálneho odoslania? Na čo to je dobré?
joe
Profil
_es:
Nějaký důvod, proč bych neměl využívat AJAX i pro formuláře? Neznám.

Jednoduše proto, protože nechci znovu načítat kompletní stránku.

EDIT (OT): A protože AJAXové stránky jsou cool :-)
_es
Profil
joe:
Nějaký důvod, proč bych neměl využívat AJAX i pro formuláře? Neznám.
Ja zase nepoznám dôvod, prečo by sa to využívať malo - je to len neužitočná komplikácia. A napríklad tak nebudeš môcť odoslať súbor.

Jednoduše proto, protože nechci znovu načítat kompletní stránku.
Formulár má atribút target, ten sa dá využiť presne na to, napríklad ho nasmerovať na iframe, frame alebo nové okno.
joe
Profil
_es:
Ale já nepotřebuju pomoc se zajaxovatěním formulářů, vím o nemožnosti posílání souboru.

Nepotřebuju taky směřovat formulář do rámu, nepotřebuju kód ani nijak opravovat, mám ho funkční, zajímá mě jen rozdíl POST a GET v XMLHttpRequestu.
_es
Profil
joe:
zajímá mě jen rozdíl POST a GET v XMLHttpRequestu.
Rozdiel je taký istý ako rozdiel medzi metódami post a get v formulároch, je to rozdiel medzi metódami post a get vo všeobecnejšom HTTP protokole.

A protože AJAXové stránky jsou cool :-)
Ale toto nie je využitie AJAXovej funkčnosti, ale zmršenie jednej veľmi dobrej funkcie prehliadača na horšiu funkčnosť.
joe
Profil
_es:
Rozdíl je tedy to, co jsem psal ([#3]), takže vytváření GET při XHR je vlastně k ničemu?

Ale toto nie je využitie AJAXovej funkčnosti, ale zmršenie jednej veľmi dobrej funkcie prehliadača na horšiu funkčnosť.
Ale nepovídej.
joe
Profil
Výhody použití AJAXu například v diskusi při posílání příspěvku:

- interaktivita
- žádné zbytečné znovu načítání všech informací o diskusi (tj. výběr tématu a všech příspěvků na aktuální straně)
- má odpověď se objeví okamžitě (v případě úspěchu)
- po načtení nemusím znovu scrollovat na poslední příspěvky

... vymyslel bych i další výhody. Ale není to předmětem toho, na co jsem se ptal.
_es
Profil
joe:
Rozdíl je tedy to, co jsem psal ([#3]), takže vytváření GET při XHR je vlastně k ničemu?
Prečo by to malo byť „k ničemu“, ak je užitočné, aby boli všetky odosielané dáta v adrese, alebo to z nejakého dôvodu vyžaduje server... Teda je to presne na to, na čo treba, ak potrebuje programátor použiť metódu get alebo ju uprednostní pred inou metódou.

ýhody použití AJAXu například v diskusi při posílání příspěvku
Úplne všetky tie výhody sa dajú dosiahnuť aj pri použití iframe alebo frame a správne nastaveného target formulára.

vymyslel bych i další výhody.
Do toho!
Inšpirovať sa môžeš napríklad tu.
joe
Profil
_es:

Prečo by to malo byť ‚k ničemu‘, ak je užitočné, aby boli všetky odosielané dáta v adrese, alebo to z nejakého dôvodu vyžaduje server... Teda je to presne na to, na čo treba, ak potrebuje programátor použiť metódu get alebo ju uprednostní pred inou metódou.
Protože když vytvářím XMLHttpRequest, tak asi URL adresu měnit chtít nebudu...

Úplne všetky tie výhody sa dajú dosiahnuť aj pri použití iframe alebo frame a správne nastaveného target formulára.
A proč mi pořád předhazuješ ty rámce, vždyť je úplně jedno, jestli je použiju nebo ne. Já je používat nechci, také mají řadu nevýhod, proč je nevolit.
_es
Profil
joe:
Protože když vytvářím XMLHttpRequest, tak asi URL adresu měnit chtít nebudu...
No ale na nastavenie get dotazu môže stačiť práve len to nastavenie URL adresy.
joe
Profil
Teď ti nějak nerozumím. Asi nechápu využití XHR a metodou GET. Kdybych chtěl použit klasický GET, nebudu tenhle objekt vůbec používat..
_es
Profil
joe:
Kdybych chtěl použit klasický GET, nebudu tenhle objekt vůbec používat.
A aký iný objekt, okrem formulárov, sa dá použiť na načítanie dát pomocou HTTP metódy GET?

nechápu využití XHR a metodou GET
Že je jednoduchšie odoslanie dát - stačí len nastaviť správnu adresu - tú časť za otáznikom.
TomášK
Profil
_es:
Opravdu doporučuješ rámy (frames?) jako náhradu pro AJAXové odesílání formulářů? I iframe může být problematický - pokud neznám rozměry obsahu. Jsi očividně zaujatý proti odesílání formulářů AJAXem, ale neuvádíš žádný dobrý důvod proč. joe argumenty pro AJAX uvádí - některé uživatele (třeba mě) potěší, když mi stránka po odeslání formuláře neproblikne. Snižuje se tím datový tok a tedy i zátěž serveru. Dosavadní protiargumenty byly, že to je zbytečné (není, pokud to alespoň někteří uživatelé ocení) a že to nejde použít vždy, viz zmíněné odesílání souborů (ok, nebudem to používat, pokud potřebujem odeslat soubor). Jsou jiné důvody proč to nepoužít?

joe:
GET používám pro requesty, které nemění data na serveru, pouze je čtou. POST pro data, která mění data na serveru (vytvoření/úpravu/smazání záznamu). Kdysi jsem zaslechl, že roboti vyyhledávačů zpravidla odesílají jen GET požadavky, jestli je to pravda, nevím. Příklad používaných akcí z frameworku:

GET - index, show, new (stránka s formulářem), edit (stránka s formulářem)
POST - create (stránka zpracovávající data odeslaná formulářem)
PUT - update (stránka zpracovávající data odeslaná formulářem)
DELETE - destroy

Pro XHR requesty používám GET třeba při napovídání v textových polích, odeslání formuláře, který "jen" filtruje zobrazená data apod.
joe
Profil
Ne, ne... Mícháš dohromady HTML a JavaScript.

Já se ptám jenom na XHR, protože tam nevidím důvod používat GET. To byl vlastně důvod, takové zamyšlění, proč jsem se ptal. K čemu tam ten GET vlastně je. Možná, že se ten XHR používá i na něco jiného, než ve spojitosti s AJAXem, ale ani tam nevidím důvod toho GETu. Protože když bych chtěl GET, změním rovnou adresu a žádný objekt XHR nepotřebuji.
joe
Profil
TomášK:
Příklad používaných akcí z frameworku: ...

Vím k čemu používat GET/POST. Samozřejmě používám velmi podobně, ne-li stejně.

Ale nevidím důvod jej rozlišovat taky při vytváření u XHR, protože tam mi to rozdělení GET/POST přijde zbytečné, když vždy mohu data poslat jako POST a nemusím se starat o GET.
_es
Profil
TomášK:
I iframe může být problematický - pokud neznám rozměry obsahu.
Čo s tým majú rozmery obsahu? Prečo by mal mať obsah načítaný do (neviditeľného) iframe nejaké rozmery?
Dá sa použiť tak isto ako XHR. Do iframe sa načítajú dáta a potom sa nejako použijú. Len odpadá to nadbytočné, spomaľujúce, skladanie dotazu, ktoré vie prehliadač spraviť „natívne“.

Snižuje se tím datový tok a tedy i zátěž serveru.
Po predchádzajúcom vysvetlení snáď tento argument odpadá.
joe
Profil
_es:
Dá sa použiť tak isto ako XHR. Do iframe sa načítajú dáta a potom sa nejako použijú

A s tímhle si iframe také podle tebe poradí?

- indexování obsahu iframu vyhledávači
- co zobrazit v iframu, dokud nebyl formulář odeslán - musíš určit zdroj, tzn. zbytečný požadavek
- co když budu chtít elementy uvnitř iframu zobrazovat i okolo něj?
- tímhle si nejsem jistý, ale řekl bych, že to tak bude - do rámce musím načítat prakticky znovu celou stránku - HTML, HEAD, všechny skripty, které uvnitř použiju, BODY, samotný obsah, ...
_es
Profil
joe:
Ale nevidím důvod jej rozlišovat taky při vytváření u XHR, protože tam mi to rozdělení GET/POST přijde zbytečné, když vždy mohu data poslat jako POST a nemusím se starat o GET.
Ale predsa úplne rovnako sa obe metódy používajú aj pri formulároch, v súlade s popisom v [#16]. Odoslanie metódou GET je jednoduchšie, to snáď na jej použitie v niektorých prípadoch stačí.
joe
Profil
_es:
Jednodušší? V čem?

Že v případě GET vytvořím adresu rovnou a v případě POST předám parametry další metodou? V tom zase takový rozdíl není.
_es
Profil
joe:
- indexování obsahu iframu vyhledávači
Táto otázka je nejako úplne od veci. Tvoj dotaz bol o formulároch, prečo by mal vyhľadávač indexovať výsledky z formulárov? Obsah prístupný len z XHR však nezaindexuje vôbec.

co zobrazit v iframu, dokud nebyl formulář odeslán
Ako by mal zobraziť niečo v skrytom iframe? Obsah XHR tiež predsa priamo nezobrazuje.

co když budu chtít elementy uvnitř iframu zobrazovat i okolo něj?
Na to slúži JavaScript, len ho treba správne využiť.

tímhle si nejsem jistý, ale řekl bych, že to tak bude - do rámce musím načítat prakticky znovu celou stránku
A to nejako vadí, či je ten obsah v elemente HTML?
všechny skripty“ Načo? Ale ak treba, dá sa to. S XHR sa to nedá.

Iframe navyše umožňuje, ak sa to vyplatí, priebežný prístup k čiastočne načítanému obsahu - čo sa s XHR nie vždy a v každom prehliadači a jednoducho dá.
joe
Profil
_es:
Táto otázka je nejako úplne od veci. Tvoj dotaz bol o formulároch
Můj dotaz nebyl o formulářích, jak už jsem se ti snažil několikrát vysvětlit - [#3][#7][#17]

prečo by mal vyhľadávač indexovať výsledky z formulárov
Mám stránku třeba

/uzivatele - vypis poslednich dvaceti nejnovějších uživatelů, na stránce je filtrační formulář, který když ajaxově odešlu, změnim ty uživatele. Vyhledávač, v době kdy bude indexovat získá odkazy na profily uživatelů.


Ako by mal zobraziť niečo v skrytom iframe? Obsah XHR tiež predsa priamo nezobrazuje.
Většinou to je tak, že nejdřív se zobrazí nějaká defaultní data (nejnovější položky), které AJAXem přepíšu. Takže bys do iframu musel načítat třeba ty nejnovější položky -> nastavovat src u iframu, abys do něj něco načetl.

Na to slúži JavaScript, len ho treba správne využiť.
Pochybuju, že dostanu element z iframu do okolní stránky se vším všudy. Akorát si zadělávám na problémy.

A to nejako vadí, či je ten obsah v elemente HTML?
Je to zbytečné, protože už je jednou mám v celém layoutu. Proč je znova načítat - někdy z cache, jindy ne a proč je znovu chtít po prohlížeči zparsovat, když je budu chtít v iframu znovu použít?

S XHR sa to nedá.
Ani to totiž nepotřebuju. Je nesmyslné načítat něco, co už načtené je.

Už prosím nepíš o rámcích, nehodí se sem, neptal jsem se na ně a jejich použití se mi zdá v 99% zbytečné.
_es
Profil
joe:
na stránce je filtrační formulář, který když ajaxově odešlu, změnim ty uživatele. Vyhledávač, v době kdy bude indexovat získá odkazy na profily uživatelů.
Obsah, dostupný len cez JS (teda aj AJAX), vyhľadávače nezaindexujú vôbec, lebo sa k nemu ani nedostanú.
Pochybujem tiež, že bude vyhľadávač skúšať nejako vypĺňať alebo prepínať formulárové elementy a indexovať vrátený obsah.

Pochybuju, že dostanu element z iframu do okolní stránky se vším všudy.
Prečo mi vnucuješ niečo, čo je len možnosť? V XHR žiadne elementy nie sú, len obyčajný text. Presne tak isto sa dá použiť aj iframe.

Je nesmyslné načítat něco, co už načtené je.
To je. A kde som písal, že chcem načítavať už načítané? Podobne aj ďalšia otázka.

Ešte raz:
Neviditeľný iframe môžem použiť v princípe úplne rovnako ako XHR.
No zatiaľ čo pri použití mimo formulárov je použitie XHR zväčša užitočné a jednoduchšie, tak o náhrade natívneho odoslania formulára sa to povedať nedá.
joe
Profil
_es:
Ano, roboti JS neumí (zatím). Ale nepsal jsem, že by indexovaly to, co se skrývá až za AJAXem, ale to, co se defaultně načte na stránce, tedy to, co se až potom mění AJAXem.

Prečo mi vnucuješ niečo, čo je len možnosť?
Píšu ti nevýhody, které má ten tvůj tak slavný iframe ;-)

To je. A kde som písal, že chcem načítavať už načítané? Podobne aj ďalšia otázka.
Další bod z nevýhod. Na složitějších stránkách/aplikací může být třeba zpracovat výsledky (po načtení) nějakým JavaScriptem. A ty ho budeš muset znovu načítat v hlavičce.

Iframe môžem použiť v princípe úplne rovnako ako XHR.
Napsal jsem ti nevýhody. Opět - vymyslel bych jich zase víc.

tak o náhrade natívneho odoslania formulára sa to povedať nedá.
Iframe je zkrátka zbytečný. BEZ JS se formulář klasicky odešle, s JS se formulář pošle přes XHR.
Podívej se třeba na Nette jak pracuje se snippety, myslíš, že si to někdo bude přepisovat na to, aby tam měl iframe, když je to k ničemu? :) Asi těžko.



Zvláštní, ale po 25 příspěvcích jsem se nedozvěděl to, na co jsem se ptal.

Takže znovu:
K čemu mi je definování metody GET u objektu XHR, když vždy mohu použít POST.

V případě jQuery se jedná jen přepsání "get"za "post".

Rozdíly v odeslání požadavku přes samotný JS jsou napsány třeba zde
_es
Profil
joe:
Asi mi vôbec nerozumieš o akom použití píšem.

Tvoje riešenie:
Normálne odoslanie formulára sa znefunkční, JS vytvorí objekt XHR, prečíta vlastnosti formulárových elementov a podľa nich ponastavuje vlastnosti XHR, odošle dotaz a vrátené dáta nejako spracuje.

Moje riešenie:
Formulár sa normálne odošle do skrytého iframe, do ktorého sa načítajú tie isté dáta ako v tvojom riešení a nejako sa spracujú.
Teda tam žiadne nadbytočné dáta, skripty, hlavičky, nevýhody a neviem čo ešte nevystupuje.

K čemu mi je definování metody GET u objektu XHR, když vždy mohu použít POST.
Napríklad môžeš skúsiť zadať adresu v adresovom riadku v prehliadači, čo sa ti načíta. Alebo hocijaké iné použitie, kde stačí na načítanie dát len adresa.
joe
Profil
_es:
To máš sice pravdu, v tomto to jednodušší je, ale když to jQuery udělá za tebe, neřešíš nic (nebo když na to máš už funkci).

I s tím tvým rámcem, pořád si musíš ten form označit, nejlépe nějak třídou, že ho chceš posílat AJAXově. Protože kdybys to neudělal, bez JS by se ti asi pořád odesílal do nějakého rámce, nevím jak by to reagovalo, pokud by neexistoval. Může se to v každém prohlížeči chovat třeba jinak.
Po odeslání formuláře bys musel přidávat iframe do DOMu, řekl bych, že jeden ti stačit nebude, co když uděláš víc požadavků těsně za sebou - dostaneš jen ten poslední. I když to by taky možná šlo pomocí onchange opravit, nevím, zase by se to muselo vyzkoušet, jak to funguje v každém prohlížeči oproti spolehlivému cyklu, co projde formulářové položky a dá je do stringu.


Už jsme zase tam, o čem to vůbec není. Takže teď zase trochu k tématu:


Napríklad môžeš skúsiť zadať adresu v adresovom riadku v prehliadači, čo sa ti načíta. Alebo hocijaké iné použitie, kde stačí na načítanie dát len adresa.
Nevím, jak bych to mohl zkusit. Ta adresa, o které píšeš, že můžu vyzkoušet (běžný uživatel to dělat nebude) není tou adresou, která je u action u formuláře, ale teprve ta, která se dává dohromady někde uvnitř skriptu (JS), takže fakt pochybuju, že to tam někdo bude hledat, jen aby to zkusil :-)

Ty zřejmě pořád nechápeš, na co se ptám.

V HTML, začátky formulářů:

<form action="/uzivatele" method="post">

... tady adresa po odeslání zůstane /uzivatele

a
<form action="/uzivatele" method="get">

... tady po odeslání se adresa změní na /uzivatele?param1=...&param2=...&param3=...

A teď, oba chci posílat AJAXem a na onsubmit jim dám handler, který vytvoří XHR a nastaví metodu GET/POST podle toho, co je v atributu method u toho odesílaného formuláře.

Celou tu dobu se ptám teda na to, proč bych měl vůbec rozlišovat v tom JS nějakou tu metodu, když všechno můžu jednoduše posílat přes POST. Tedy k čemu tam to GET vlastně je, když to na to nemá žádný vliv? Už mi po dvacátém osmém příspěvku zde rozumíš?
_es
Profil
joe:
Tedy k čemu tam to GET vlastně je, když to na to nemá žádný vliv? Už mi po dvacátém osmém příspěvku zde rozumíš?
Na tom som ti predsa odpovedal už v [#8], ty ako programátor by si mal vedieť, ktorá metóda ti na daný účel viac vyhovuje, neviem, akú inú radu by si chcel.

takže fakt pochybuju, že to tam někdo bude hledat, jen aby to zkusil :-)
Myslel som, že by si to tak mohol skúšať napríklad ty.

Že nie je použitie metódy GET jednoduchšie pre teba, neznamená, že nie je náročnejšie pre prehliadač a server, možno to je zanedbateľné, možno to pri veľa dotazoch zanedbateľné byť nemusí. No malo by byť ošetrené, aby pomocou metódy GET nešlo meniť dáta na serveri, aby šli len načítavacie dotazy, alebo bola úplne nefunkčná.

když všechno můžu jednoduše posílat přes POST.
Tak prečo máš teda metódu GET v tom formulári? Ak má byť nejaká ekvivalencia medzi „vylepšeným“ a normálnym odoslaním formulára, prečo by malo používať každé inú metódu?

Mimochodom, keď už používaš formuláre, u ktorých aj návštevník bez JS očakáva funkčnosť, máš ošetrené, aby to bolo nejako rozumne funkčné aj bez JS?
Tori
Profil
joe:
všechno můžu jednoduše posílat přes POST. Tedy k čemu tam to GET vlastně je, když to na to nemá žádný vliv?
Ač netázána přidám subjektivní názor: GET by mohl mít docela smysl u XHR v případě, že chcete z přístupových logů dohledat odeslání konkrétních dat na server, která mohla přijít jak obyčejně formulářem, tak AJAXem. U běžného odeslání formuláře přeci máte taky nějaký důvod, proč zvolíte GET nebo POST - proč by u AJAXového odeslání téhož formuláře neměl tento důvod stále platit?
edit: Vlastně jsem jen dala konkrétní příklad k tomu, co psal _es v [#11].
« 1 2 »

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0