21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
Komlkol
Profil *
Zdravím,
nastavil jsem si na stránce cachování a bohužel mi to bere i počítadlo.
A tak bych se chtěl zeptat, zda-li je možné pomocí js spustit php script.
Tedy například, js script bude na stránce web.cz/konkretni-stranka.php a aby se při každém načtení této stránky spustilo počítadlo na web.cz/pocitadlo/pocet.php

Předem díky za rady.
Str4wberry
Profil
Jde k tomu použít AJAX nebo prosté vytvoření obrázku a nastavení cílové stránky do src: AJAX » Pingnutí obrázkem
Komlkol
Profil *
Děkuji za rychlou odpověď, jak to jde ještě prosím udělat pomocí Ajaxu?
Str4wberry
Profil
Odrolujte si v tom článku na začátek. :–)

Ale pokud není potřeba získat zpět nějakou odpověď, tak stačí ten obrázek.
Komlkol
Profil *
Ideální by bylo, pokud by se ještě vrátilo číslo, které se na php scriptu jako jediné vypíše, ale to se bojim, že nepůjde.
Str4wberry
Profil
Tak to půjde právě tím AJAXem.
Komlkol
Profil *
Takže takhle by to mohlo být?
<script type="text/javascript">
$('#result').load('test.php');
</script>
_es
Profil
Choď späť na krok [#4].
Komlkol
Profil *
Bohužel javascriptu vůbec nerozumím, ale tak co jsem hledal, tak mi přijde nejlepší nějak použít fci load, ale nevím jak na to.
Na stránce s počítadlem se vypíše akorát číslo, které bych potřeboval vypsat na stránku.
Nebyla by další nápověda?
_es
Profil
Komlkol:
Celkovo sa vyjadruješ nejako nezrozumiteľne. Čo znamená „bohužel mi to bere i počítadlo“? Ako „berie“? Kedy to (čo) nemá „brať“? Ak to bude cez AJAX, tak to „brať“ nebude? Prečo to počítadlo nedáš už do web.cz/konkretni-stranka.php a tam „nevypisuješ“? Okrem toho, myslíš, že návštevníka zaujíma nejaké „počítadlo“?
Komlkol
Profil *
To počítadlo je počet spuštění a navštěvníci dle něj mohou řadit.
Nyní bohužel to proběhne jednou a poté je stránka cachnuta a až cca za hoďku se započítá další spuštění (obnova cache)
Takže nyní potřebuji, aby mi javascript načetl obsah z /pocitadlo/pocet.php (po spuštění tohoto php se vypíše pouze '152') a to bych potřeboval vypsat na stránce, ze které je volán.
_es
Profil
Komlkol:
a až cca za hoďku se započítá další spuštění (obnova cache)
Ak až za hodinu? To snáď návštevník hodinu stále pozerá na tú istú stránku, bez toho, aby sa hocičo zo serveru načítalo?

(po spuštění tohoto php se vypíše pouze '152') a to bych potřeboval vypsat na stránce, ze které je volán.
Prečo to vypočítanie '152' nedáš priamo do tej „stránky, z ktorej je volaný“?
Komlkol
Profil *
Vždy když se počítadlo načte, tak se zvětší o 1. Tedy 1. načtení 1, druhý 2, třetí 3,.... (klasicky php soubor)
Stránka, na které chci toto zobrazit je cachnutá, tedy je zachycena jako klasický soubor .html (nelze na ni použít php)
Takže potřebuji toto načíst a vypsat pomocí javascriptu.
_es
Profil
Komlkol:
No tak použi trebárs upravený prvý kód z článku:
<script>
var vystup = document.getElementById("idElementu"); // kam sa to má výpísať
var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
xhr.onreadystatechange = function () {
  if (xhr.readyState == 4) vystup.innerHTML = xhr.responseText;
};
xhr.open('GET', "pocitadlo/pocet.php");
xhr.send();
</script>
Daj ten kód niekde za element, kde sa má to číslo vypísať.
Komlkol
Profil *
Díky, to je přesně ono :)
Keeehi
Profil
A co to kešování udělat trochu inteligentnější? Řekněme že máš kešovaný kód v stránka.html a v něm tam, kde pak chceš mít počítadlo máš řetězec {pocitadlo}. No a pak máš jiný soubor, který bude tento soubor zobrazovat.
<?php
echo str_replace('{pocitadlo}', $hodnotaPocitadla, file_get_contents('stránka');
Je to velmi jednoduchý systém a však pro tvoje účely zřejmě plně dostačující.
Komlkol
Profil *
Tak jsem narazil ještě na jeden problém.
Je možné dát tam tento script 2x? konkrétně tento:
<div id="statistika1">neco1</div>
<div id="statistika2">neco2</div>
<script>
window.onload = function(){
  var vystup = document.getElementById("statistika1") 
  var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
  xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) vystup.innerHTML = xhr.responseText;
  };
  xhr.open('GET', "/pocitadlo/pocet1.php");
  xhr.send();
};
</script>
<script>
window.onload = function(){
  var vystup = document.getElementById("statistika2") 
  var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
  xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) vystup.innerHTML = xhr.responseText;
  };
  xhr.open('GET', "/pocitadlo/pocet2.php");
  xhr.send();
};
</script>

Nevíte jak udělat, aby proběhlo obojí a ne jen jedno?
_es
Profil
Komlkol:
Namiesto window.onload = function(){...}; použi (function(){...})();. Alebo len tak ako v [#14], no nesmú byť v skriptoch premenné s rovnakým názvom. Ak by toho malo byť viac, tak by bolo dobré si na to spraviť funkciu.
bestik_63
Profil
Já používám toto:

$(document).ready(function() {                                //počká až bude načten dokument (až bude možné prohledávat DOM)
    $.ajax({
            type: "POST", url: "revize_hlidac1.php"
        })
    $.ajax({
            type: "POST", url: "revize_hlidac2.php"
        })
})

a spouští mi to to obě stránky. Je k tomu potřeba mít načtený Jquery.
Komlkol
Profil *
Ani jedno vaše řešení se mi nepovedlo nasadit, nedal by to někdo prosím konkrétně?


Nakonec se mi povedlo rozchodit řešení od _es , nejprve sem zapomněl na závorku.

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:

0