Autor Zpráva
Samo
Profil
Dobrý deň, mám taký problém, potreboval by som aby java neurobil window.open pretože pri blokovaných popupoch sa ani nevykoná a ak sa pri odblokovaných vykoná tak zostane otvorené okno :)
Potreboval by som aby nejako po kliknutí na ok sa vykonal php script na stránke kam smeruje odkaz bez popup okien alebo niečoho podobného, aby užívateľ nič nezbadal, iba sa vykonala tá požiadavka (DELETE FROM)
ďakujem ;)

              if (!iADMIN){
                  echo '<script type="text/javascript">';
                  echo 'function show_confirm()';
                  echo '{';
                  echo 'var r=confirm("Vymazať?");';
                  echo 'if (r==true)';
                  echo '  {';
                  echo 'window.open("delete.php?id='.$id.'","window_name","width=300,height=200,resizable=no");';
                  echo '  alert("Komentár bol úspešne vymazaný!");';
                  echo '  }';
                  echo '}';
                  echo '</script>';
                  echo '<a href="javascript:show_confirm()"><img src="./images/edit.png" border="0"></a>';
                  echo '<br />';
                  echo 'IP adresa: '.$ip_adresa;
                }


//EDIT: teoreticky by mi pomohlo aj riešenie ak by form action bol self a submit button mohol byť obrázok... :)
ale aby bol submit obrázok to neviem akosi vyriešiť...
AM_
Profil
k tomuto se používá AJAX - doporučuji využít frameworku jQuery, psát čistý AJAX je docela sodoma. http://citron.blueboard.cz/clanek-337-jquery-pro-zacatecniky-ajax.html
Chamurappi
Profil
Reaguji na Sama:
Nepotřebuješ AJAX, stačí ti pingnout na adresu:
var temp = new Image();
temp.src = "tvuj-skript.php"
Tahat jen kvůli takové prkotině framework nedoporučuji.


Reaguji na AM:
psát čistý AJAX je docela sodoma
Může si přikopírovat jednokilovou hotovou funkci úplně stejně pohodlně jako tu tvoji osmdesátikilovou.
Radek Cvek
Profil
Samo:
<?php
$id=5;
{
                  echo '<script type="text/javascript">';
                  echo 'function show_confirm()';
                  echo '{';
                  echo 'var r=confirm("Vymazať?");';
                  echo 'if (r==true)';
                  echo '  {';
                  echo 'loadXMLDoc("'.$id.'");';
                  echo '  alert("Komentár bol úspešne vymazaný!");';
                  echo '  }';
                  echo '}';
                  echo '</script>';
                  echo '<a href="javascript:show_confirm()"><img src="./images/edit.png" border="0"></a>';
                  echo '<br />';
                  echo 'IP adresa: '.$ip_adresa;
                }
?>                 
<script type="text/javascript">              
function loadXMLDoc(id)
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","delete.php?id=" + id, true);
xmlhttp.send();
}
</script>

Chamurappi:
var temp = new Image();
temp.src = "tvuj-skript.php"

To bych chtěl vidět na příkladu nebo nějaký odkaz - vůbec to nechápu
_es
Profil
Radek Cvek:
vůbec to nechápu
Čo na tom nechápeš, veď to už zrozumiteľnejšie napísané byť nemôže.

To bych chtěl vidět na příkladu
Napríklad sa dá posledná funkcia loadXMLDoc nahradiť za:
function zmaz(id) {
  var temp = new Image();
  temp.src = "delete.php?id=" + id;
}

Ďalšia možnosť je použiť normálny odkaz nasmerovaný do iframe.
Radek Cvek
Profil
_es:
Díky - já si všechno musím vyzkoušet - toto neznám. Teď jsem si to zkusil a jde to.
Samo
Profil
ďakujem, idem to vyskúšať, zajtra dám vedieť ;)
joe
Profil
Chamurappi:
Nepotřebuješ AJAX
A je možné se tímto způsobem dostat také k výstupu samotného skriptu? U obrázku nevím, možná že to nějak jde, získat data...

Ale například u iframu, jak píše _es by to mělo jít přes innerHTML.
_es
Profil
joe:
U obrázku nevím, možná že to nějak jde, získat data…
Táto metóda ráta s tým, že výstup nie je treba, takže veľmi nie. Dajú sa zistiť rozmery obrázka, či sa obrázok načítal v poriadku, či nenastala chyba pri načítaní - ak by takáto spätná väzba stačila, tak sa to dá po úprave použiť.

Ale například u iframu, jak píše _es by to mělo jít přes innerHTML.
Možnosti pri iframe sú ešte bohatšie než pri objekte XMLHttpRequest. Do iframe sa dá načítať celý HTML dokument aj s JS, ktorý môže spolupracovať so zvyškom stránky.

Ešte ďalšou možnosťou je načítanie JS vygenerovaného pomocou PHP - atribút src značky <script>.
joe
Profil
_es:
Táto metóda ráta s tým, že výstup nie je treba
Taky jsem si myslel, ale úplně jistý si nebyl. V mazání je však také potřebná zpětná vazba. Mohlo by tak dojít (i když by to nebylo tolik pravděpodobné) k nějaké chybě, například bych smazal nějaký element (z DOM), jako že záznam byl smazán, ale ve skutečnosti ke smazání nedošlo.

Možnosti pri iframe sú ešte bohatšie
Nemyslím si, řekl bych, že to vyjde nastejno. Do generovaného bych stejně musel zapasovat JS kód, který by vypadal téměř totožně jako ten, co by se volal při úspěšném požadavku (XMLHttp...).

Všechny zmiňované způsoby jsou možné, nevýhoda je v tom, že JS je psaný na více místech (podle mě zbytečně).
_es
Profil
joe:
Nemyslím si, řekl bych, že to vyjde nastejno.
Pomocou iframe sa dajú dosiahnúť aj veci, ktoré cez XMLHttpRequest nejdú, napríklad akcie ešte počas načítania, načítanie dát rôzneho druhu, … Odkaz do iframe bude funkčný aj pri vypnutom JS.
joe
Profil
_es:
Promiň, nepřesvědčil jsi mě :-) Možná máš pravdu, ale teď mě nenapadá nic, co by s využitím iframu šlo a přes XHR ne, ten mimojiné má v parametru readyState stav, ze kterého se dá zjistit, jestli se už je dokončený nebo se stále čeká.

Odkaz do iframe bude funkčný aj pri vypnutom JS.
Bude, to máš pravdu a v tom je docela výhoda, kterou jsem si neuvědomil, ale bez JS zase nedostaneš zpětnou vazbu, protože nevíš, jak to dopadlo. Výstup sice v iframu bude, ale co s ním, když JS není zapnutý.
_es
Profil
joe:
má v parametru readyState stav, ze kterého se dá zjistit, jestli se už je dokončený nebo se stále čeká.
Ale funkčnosť je naprieč prehliadačmi nejednotná a okrem zistenia stavu sa toho veľa zistiť nedá.

teď mě nenapadá nic, co by s využitím iframu šlo a přes XHR ne
Všetko, čo sa dá načítaním kompletného HTML dokumentu a nedá sa načítaním obyčajného textu alebo xml formátu.

bez JS zase nedostaneš zpětnou vazbu, protože nevíš, jak to dopadlo.
Aj to sa dá vyriešiť, iframe môže byť viditeľný a zobrazí sa v ňom odpoveď servera.
joe
Profil
_es:
Ale funkčnosť je naprieč prehliadačmi nejednotná
Skoro bych řekl, že readyState bude dostupný ve většině prohlížečů, snad ani jednou jsem neviděl testování, jestli je tento parametr dostupný. Možná se pletu, jak já nemam rád ty odlišnosti jednotlivých prohlížečů.

Všetko, čo sa dá načítaním kompletného HTML dokumentu a nedá sa načítaním obyčajného textu alebo xml formátu.
Podle mě, je to pořád to samé. Pokud máš jako výstup třeba jen nějaký text nebo json, tak zase ušetříš na přenesených datech a po obdržení to pomocí JS zpracuješ. A jestli to budeš zpracovávat už rovnou v tom výstupu, výsledek dostaneš stejný.

iframe môže byť viditeľný
Může, uvažoval jsem nějaký skrytý iframe.

Každopádně díky za osvěžení "nových" metod, jak AJAXu docílit, na nějaké bych skoro už zapomněl. Osobně používám ten XHR a data v JSON formátu.
_es
Profil
joe:
Skoro bych řekl, že readyState bude dostupný ve většině prohlížečů
dostupný, ale v procese načítavania je funkčnosť nejednotná.
joe
Profil
_es:
Dobře, díky za informaci. Podívám se po tom, abych s tím počítal, že to může být v prohlížečích rozdílné.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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