Autor Zpráva
Wykrycek
Profil
Ahoj,
pracuji na jedné apliakci, která by měla běžet lokálně na počítači. Občas si ale musí stáhnout nějaká data ze serveru.
nějak se mi nedaří najít návod, jak pomocí JavaScriptu (nebo AJAXu atd.) načíst obsah url a uložit ji do proměnné (repspektive do HTML).

Podle informací, které mám toto JavaScript nemá z bezpečnostních důvodů umět. Měl by to řešit AJAX, ale nevím jak - nikdy jsem to nedělal.
Keeehi
Profil
Wykrycek:
AJAX je taky javascript (je to to J v AJAX)

Pokud využíváš PHP, mohlo by ti pomoct
<?php $obsah = file_get_contents("http://example.com");?>
Wykrycek
Profil
Keeehi:
To je právě ten problém, aplikace běží bez podpory PHP.

Já v podstatě potřebuju data ze serveru zobrazit v této aplikaci aniž bych musel reloadnout stránku.
- aplikace sama kontroluje, zda se něco na serveru nezměnilo. Pokud ano, přes innerHTML se to zapíše do HTML.
Jen nevím jak ty data dostat ke klientovi..
Chamurappi
Profil
Reaguji na Wykrycka:
Měl by to řešit AJAX, ale nevím jak
Nijak.

Můžeš načítat externí <script> z cizího serveru, který něco provede.
Wykrycek
Profil
Chamurappi:
Můžeš načítat externí <script> z cizího serveru, který něco provede.
Nevím jestli to něco řeší - já u klienta mám podporu JS, script může tedy běžet i u něho.

Mě jde o to, v případě potřeby načíst data, třeba z adresy
"http://example.com/data.php"
do proměnné v JS.
K tomu by mi předpokládám měl stačit nějaký <script> běžící u klienta, který chce data získat..
_es
Profil
Wykrycek:
Podle informací, které mám toto JavaScript nemá z bezpečnostních důvodů umět. Měl by to řešit AJAX, ale nevím jak - nikdy jsem to nedělal.
AJAX je tiež len JavaScript, teda to cez neho tiež nepôjde.
Jedine, že by server generoval JavaSript, ten ide načítať aj z cudzieho severa - ako ma stihol predbehnúť Chamurappi.
Ak ti stačí obmedzenie len na niektorý prehliadač:
Nejakým nastavením prehliadača na klientskej strane, malo by to asi ísť v IE.
Najnovšie prehliadače možno umožňujú cross-site-xmlhttprequest.
Všetko to však vyžaduje, aby si mal pod kontrolou cudzí server - alebo klientov počítač.
Ľubovolné dáta z ľubovolného servera cez ľubovolný prehliadač nenačítaš.
Wykrycek
Profil
Vyřešeno scriptem

<script type="text/javascript">
var server = document.location.hostname;

function stahniData(akce) {

    var hlavicka = document.getElementsByTagName("head")[0];
    var dataLoader = document.getElementById("scriptLoader");
    if(dataLoader) hlavicka.removeChild(dataLoader);

    script = document.createElement("script");
    script.id = "scriptLoader";
    script.src = "http://"+server+"?akce="+akce+"&r="+Math.random();

    x = document.getElementsByTagName("head")[0];
    x.appendChild(script);

    return false;
}

function vypisText(txt) {
	document.getElementById("window").innerHTML = txt;
}
</script>


...

<a class="menu-button" href="#" onclick="return stahniData('link1');">Link1</a>
<a class="menu-button" href="#" onclick="return stahniData('link2');">Link2</a>
<a class="menu-button" href="#" onclick="return stahniData('link3');">Link3</a>


...

Script vytvoří v hlavičce další script, který stahuje ze servedu data a pomocí funkce "vypisText()" ji vloží do objektu "window".

Server vrací malé bloky dat ve tvaru např:
vypisText('Text vrácený serverem');


Funkce "stahniData()" se v tomto příkladu aktivuje kliknutím na někderý z odkazů

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:

Prosím používejte diakritiku a interpunkci.

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