Autor Zpráva
TFSi
Profil
Zdravím,
opět bych měl jeden menší dotaz:

co je nejvhodnější pro rozpoznání, zda je požadavek na danou URL "běžný" (adresa byla otevřena třeba kliknutím na odkaz, nebo jí někdo zadal do prohlížeče ručně, ...), nebo jestli požadavek vytvořil AJAX.

Když bych vzal kus z nejjednoduššího příkladu:
...
  httpRequest.open("GET", url, true);
  httpRequest.onreadystatechange= function () {processRequest(); } ;
  httpRequest.send(null);
...

tak mně napadají dvě možnosti:
1) přidat k URL nějaký parametr; např. ?ajax=true
- což je sice jednoduché, ale nepřijde mi to zrovna jako nejlepší řešení... :(
2) posílat nějaké speciální hlavičky
- u požadavků přes POST nemám problém poslat hlavičku pomocí setRequestHeader(), ale u GET requestu to neumím (jestli je to vůbec možné) což je pro mně problém

Kterou možnost je podle Vás lepší použít, případně mi, prosím, navrhněte další možnosti...

Předem díky za veškeré nápady
T.
Chamurappi
Profil
Reaguji na TFSiho:
u požadavků přes POST nemám problém poslat hlavičku pomocí setRequestHeader(), ale u GET requestu to neumím (jestli je to vůbec možné)
On je v něčem rozdíl? Proč by setRequestHeader nemělo fungovat při metodě POST GET?

První možnost je docela přirozená.
Ještě je třetí možnost — tahat přesně stejný zdroj nehledě na to, zda posílá požadavek JS, a vytáhnout si z něj to, co je potřeba, pomocí JS.
TFSi
Profil
Chamurappi
Proč by setRequestHeader nemělo fungovat při metodě POST?

Hmm... zajímavé. Když jsem to zkoušel naposledy, tak mi to nešlo, prostě se to chovalo jako kdyby to tu hlavičku vůbec neposlalo. Po přečtení Tvé reakce mi to nedalo a po půl hodině "hraní" mi to funguje... ?!? Díky!

tahat přesně stejný zdroj nehledě na to, zda posílá požadavek JS, a vytáhnout si z něj to, co je potřeba
Tomu se chci právě vyhnout, Ten AJAX chci nasadit právě proto, aby se aspoň trošku snížily datové přenosy. Takhle můžu celou stránku načíst pouze jednou a potom jenom načítat titulek a obsah stránky :)

Takže ještě jednou díky, použiji tu svou druhou možnost :)
Aichi
Profil
Nicméně nevyřčená otázka zůstává, proč to potřebuješ odlišit? Většinou se pro AJAX používají jiná URL, která servírují jiná data, Hlavičky se mi zdají jako zbytečnost.
Jan Tvrdík
Profil
TFSi:
Ajaxový požadavek se obvykle poznává podle hlavičky X-Requested-With, která při Ajaxovém požadavku má hodnotu XMLHttpRequest.

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: