Diskuze: AJAX
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 18 zpráv z 18.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.


ahoj, brzy se tu o tom objeví článek, ale v podstatě základ máš dobrý. Karlův chat se to dozví tak, že v krátkém (pro počítač dlouhém) intervalu (třeba 1s) posílá na server požadavek jestli je nová zpráva a pokud je, tak ji zobrazí. Chaty se ale řeší pomocí WebSocket, kde se odstraní ten problém požadavků každou sekundu.
OK dejme tedy jiný příklad... třeba anketa... Když já jako uživatel
kliknu na jednu z možností, přes AJAX se to odešle na server a mě se
překresli graf... Zajímalo by mě, jestli jinému uživateli, který má již
stránku načtenou před mým hlasováním, se změní graf také bez obnovení
stránky 
Pořád by stránka jiného uživatele musela třeba tu každou 1s posílat
požadavek na server.
Nefunguje to tak, že ty něco uděláš, a v tom okamžiku to zaznamená i
druhý uživatel, bohužel, na to bys musel použít ty WebSockets. 
AJAX není zázrak, funguje to úplně stupidně. Všechny požadavky, které si ty fyzicky v tom scriptu pošleš se zpracují, nic víc se samo dělat nebude. Nic se nebude aktualizovat, nic se nebude překreslovat, prostě v JavaScriptu se zázraky nedějí (ačkoliv při výpisu některých chyb Googlem Chrome si to občas myslím). Pokud chceš mít něco aktuální, tak si to musíš sám aktualizovat (v nějakém intervalu).
Nejprve, ale zvaž, jestli je to fakt potřeba. Nepředpokládám, že bys měl tak frekventovanou anketu.
No už vím jak na to, jen nechápu proč někdo používá u toho AJAXu GET a někdo POST... v PHP to chápu (GET-zobrazí se v URL, POST-nezmění URL a provede se na pozadí), jenže u AJAXu to URL nezmění
parametry v URL nesouvisí s metodou. GET jenom říká, že požadavek nemá žádný obsah a POST říká, že tam obsah bude. Obsah se předává v metodě send. Pokud obsah nemáš, posíláš GET a můžeš si tam napsat URL s parametry, pokud obsah máš, tak posíláš GET obsah a parametry v URL samozřejmě mít můžeš.
Ahoj, tak jsem to vyzkoušel v praxi, ale zdá se mi, že se stránka stejně
načítá znovu
Ale data se mi
do DB uloží. Nevíš, kde je chyba?
index.php
<!DOCTYPE HTML>
<html>
<head>
<title>AJAX</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="https://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script>
$(document).ready(function(){
$("#saveBtn").click(function(){
var email = $("#exampleInputEmail").val();
$.ajax({
url: "indata.php",
method: "GET",
success: function(data){
alert("Success");
}
});
});
});
</script>
</head>
<body>
<form>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="text" class="form-control" id="exampleInputEmail" placeholder="Enter email">
</div>
<button id="saveBtn" class="btn btn-default">Submit</button>
</form>
</body>
</html>
indata.php
<?php
$email = $_GET['email'];
$con = mysql_connect('sql.endora.cz:3313','hypnoz','heslo');
mysql_select_db('sindy', $con);
$query = mysql_query("insert into ajax values('$email')");
?>
Ahoj,
pokud se ti stránka načítá znovu, tak asi je to blbost, ale zkus vyhodit tag
form. Nevim, jestli má klasický button stejnou fci jako submit button, ale
pokud jo, mohlo by to být kvůli tomu.
Ještě možná zkusit hodit
<form onsubmit="return false;">
// omlouvám se za double post, prosím smazat
Tak problém byl opravdu v return false:
<script>
$(document).ready(function(){
$("#saveBtn").click(function(){
var email = $("#exampleInputEmail").val();
$.ajax({
url: "indata.php?email="+email,
method: "GET",
success: function(data){
alert("Success");
}
});
return false;
});
});
</script>
jen ještě nechápu, proč se za url musí napsat ten otazník a email:
$.ajax({
url: "indata.php**?email="+email**,
Tak už jsem to asi pochopil 
<!DOCTYPE HTML>
<html>
<head>
<title>AJAX</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="https://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script>
$(document).ready(function(){
$("#saveBtn").click(function(){
var email = $("#exampleInputEmail").val();
$.ajax({
url: "indata.php",
data:"email="+email,
method: "POST",
success: function(data){
alert("Success");
$("#exampleInputEmail").val("");
}
});
return false;
});
});
</script>
</head>
<body>
<form>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="text" class="form-control" id="exampleInputEmail" placeholder="Enter email">
</div>
<button id="saveBtn" class="btn btn-default">Submit</button>
</form>
</body>
</html>
Za otazníkem jsou předané parametry stránce, tzn. když napíšeš
pozdrav.php?osloveni=Karle&nalada=fajn
potom to můžeš v PHP zpracovat následujícím způsobem
echo 'Vítám tě ' . $_GET['osloveni'] . ' dnes se máš ' . $_GET['nalada'];
Tak mám hotovou aplikaci na ukládání a čtení dat pomocí AJAXu. Chci se zeptat, zda je zápis 100% správně včetně použití POST a GET u AJAXu. Dále se chci zeptat, jaký je rozdíl mezi WebSocketem a voláním funkce každou sekundu.
index.php
<!DOCTYPE HTML>
<html>
<head>
<title>AJAX</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="https://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script>
$(document).ready(function(){
$("#Save").click(function(){
if ($("#Input").val()==="")
return false;
var text = $("#Input").val();
$.ajax({
url: "indata.php",
data:"text="+text,
method: "POST",
success: function(data){
alert("Success");
$("#Input").val("");
}
});
return false;
});
setInterval(function(){
$.ajax({
url: "outdata.php",
method: "GET",
success: function(data){
if($("p").text()!==data)
$("p").text(data);
}
});
return false;
}
,1000);
});
</script>
</head>
<body>
<form>
<div class="form-group">
<input type="text" class="form-control" id="Input" placeholder="Enter text">
</div>
<button id="Save" class="btn btn-default">Save</button>
<p></p>
</form>
</body>
</html>
indata.php
<?php
$text = $_POST['text'];
$con = mysql_connect('sql.endora.cz:3313','hypnoz','');
mysql_select_db('sindy', $con);
$query = mysql_query("INSERT INTO tabulka(data) values('$text')");
?>
outdata.php
<?php
$con = mysql_connect('sql.endora.cz:3313','hypnoz','');
mysql_select_db('sindy', $con);
$query = mysql_query("SELECT data FROM tabulka ORDER BY id DESC");
echo mysql_result($query, 0);
?>
ONLINE: http://webgl.8u.cz/
Mohl by si mi to prosím zkontrolovat, ať to tu můžu uzavřít? Děkuji
Mohl by si mi to prosím zkontrolovat, ať to tu můžu uzavřít? Děkuji
Zobrazeno 18 zpráv z 18.