Autor | Zpráva | ||
---|---|---|---|
Miri Profil * |
#1 · Zasláno: 30. 9. 2011, 16:43:01
Ahoj zase já a se stejným problémem jako zde. Stále to nemůžu vyřešit.. stále něco testuji hledám a nci a nic a nic.. :-( Ještě jednou vás poprosím o pomoc a s novým příkladem.
Na stránkách santa-open.cz je web bez subdomény a 2 další subdomény (2010,2009) web má stejné uložiště pro všechny subodmény a hlavní doménu. Vše funguje jen do té doby než použiji ajax na některé ze subdomén. Mužete zkusit když v levém menu kliknete na Týmy (2011) vše funguje jak má. Stejný kod Týmy (2010,2009) Bohužel nefunguje. při prvním ajaxovém vstupu mi skoči chyba v consoly. Když do indexu přidám document.domain tak mi DW napíše chybu a nevím proč viz obrázek zde v JS mám takovouhle funkci: var system = 'http://santa-open.cz'; function nactiZsystem(name){ $.ajax({ type: "GET", url: system+"/zsystem/admin.php", data: "name="+name, success: function(data){ $("#zsystem").html(data); } }); } adresa je absolutní tak aby se soubor bral kdyžtak i z domény bez subdomény. Prosím vás za každou radu. Děkuji Míra |
||
Davex Profil |
#2 · Zasláno: 1. 10. 2011, 17:21:12
Musíš se nějak vyhnout „same origin policy“.
Zhruba máš dvě možnosti: 1) na subdoménách načítat AJAX skripty z domény do skrytého <iframe> a spouštět skripty z něj
2) použít JSONP |
||
_es Profil |
#3 · Zasláno: 1. 10. 2011, 18:27:08
Davex:
„na subdoménách načítat AJAX skripty z domény do skrytého <iframe> a spouštět skripty z něj“ Čo mu veľmi nepomôže, lebo sa síce skript v iframe spustí, no nemá prístup k okolitej stránke a rovnako aj okolitá stránka nemá prístup k iframe. No možno vtedy by nastavenie vlastnosti document.domain v Miriho prípade fungovalo. Miri: Máš tam aj chybu: Chyba: Šablóna so štýlmi http://2010.santa-open.cz/litebox/css/lightbox.css nebola načítaná, pretože jej typ MIME je "text/html" namiesto "text/css". Zdrojový súbor: http://2010.santa-open.cz/[/i] |
||
Davex Profil |
#4 · Zasláno: 1. 10. 2011, 18:37:22 · Upravil/a: Davex
_es:
„No možno vtedy by nastavenie vlastnosti document.domain v Miriho prípade fungovalo.“ Ano, nastavení document.domain je nedílná součást této techniky. Jen jsem to nechtěl opakovat.
Vlastně je ještě jedna možnost: 3) napsat si v PHP proxy skript, který bude ze subdomén přeposílat AJAX požadavky na hlavní doménu |
||
Miri Profil * |
#5 · Zasláno: 1. 10. 2011, 22:14:42
Davex
použít JSONP Jenže JSONP vrací přece jen určité data ze scriptu je to tak ? to by se mi moc nehodilo protože já potřebuju vracet celou novou stránku. Vlastně je ještě jedna možnost: 3) napsat si v PHP proxy skript, který bude ze subdomén přeposílat AJAX požadavky na hlavní doménu To se mi zdá zatím jako nejlepší řešení, ale vůbec netuším jak na to. Myslíš že by jsi mi mohl nějak nastínit jak na to ? |
||
Davex Profil |
#6 · Zasláno: 1. 10. 2011, 22:33:53 · Upravil/a: Davex
1) AJAXem se bude volat PHP skript na stejné subdoméně
2) PHP skript a) přijme GET/POST data b) přepošle všechna GET/POST data skriptu na hlavní doméně c) přijatá data a některé HTTP hlavičky od skriptu na hlavní doméně odešle prohlížeči 3) JavaScript v prohlížeči přijme data a zobrazí výsledek |
||
_es Profil |
#7 · Zasláno: 1. 10. 2011, 23:00:50
Miri:
„Jenže JSONP vrací přece jen určité data ze scriptu je to tak ?“ JSONP je to, že načítaš JS z inej alebo aj tej istej domény. Čo bude obsahovať, a ako ho vygeneruješ, je už na tebe. Teda ak môžeš nastaviť, čo má server vrátiť, tak to môžeš využiť úplne rovnako ako AJAX, len nie je obmedzenie na tú istú doménu. |
||
_es Profil |
#8 · Zasláno: 2. 10. 2011, 10:11:26
Davex:
„Ano, nastavení document.domain je nedílná součást této techniky. Jen jsem to nechtěl opakovat.“ Áno, pri použití JS v rôznych oknách čí rámoch má nastavenie document.domain zmysel - musí to povoliť aj jedna aj druhá subdoména. Nedošlo mi, že ak by malo fungovať toto, bol by ten princíp porušený - hociktorá subdoména by mala prístup k hocijakým dátam inej subddomény. |
||
Miri Profil * |
#9 · Zasláno: 2. 10. 2011, 12:08:28
Davex a _es:
Tak snad to dám něják dokupy a opravdu díky za pomoc :-) |
||
Časová prodleva: 13 let
|
0