Autor Zpráva
Baly
Profil *
zdravím,
jsem začátečník s ajaxem a tak nějak se nemůžu pohnout z místa... nevíte kde je chyba?
<html>
<body>
<script type="text/javascript">
var http;
if (window.XMLHttpRequest) {
http = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
http = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
alert("Váš Browser Nepodporuje XMLHTTP!");
}
http.onreadystatechange = function() {
if (http.readyState == 4) {
document.newform.text.value=http.responseText;
}
}
</script>
<form name="newform">
text<input type="text" name="text">
text2<input type="text" name="text2">
</form>
</body>
</html>

Má to odeslat value z textu 1 do textu 2 (asi), ale tak nějak to nedělá nic.
žívá ukázka: http://yama.kx.cz/zkouska.html

Moderátor Chamurappi: Titulek „Tak nejak ajax“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
Chamurappi
Profil
Reaguji na Balyho:
Má to odeslat value z textu 1 do textu 2 (asi)
Asi nechápu. Proč by se měl na nastavení hodnoty z jednoho pole do druhého pole používat AJAX?

tak nějak to nedělá nic
V uvedeném kódu ani nevidím, že by to něco mělo dělat. Vyrobíš XMLHttpRequest, nastavíš mu událost, co se má stát, až přijde odpověď ze serveru… a to je konec.

Na odkázané stránce vidím smysluplnější skript, který už nějak funguje.
Baly
Profil *
omlouvám se, nic jsem o tom nevěděl a měl jsem tam úplné blbost. Tedka když jsem si o tom něco přečetl, mám tento kód:

zkouska.html
<html>
<body>
<script type="text/javascript">
function ajax() {
var http;
if (window.XMLHttpRequest) {
http = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
http = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
alert("Váš Browser Nepodporuje XMLHTTP!");
}
http.open("POST","http://yama.kx.cz/zkouska.php",true);
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http.send("text="+document.form.text2.value);
http.onreadystatechange = function() {
if (http.readyState == 4) {
text.innerHTML=http.responseText;
}
}
}
</script>
<div id="text"></div>
<form name="form">
text2<input type="text" name="text2" onkeydown="ajax();">
</form>
</body>
</html>


zkouska.php
<html>
<body>
<?
$textt = $_GET['text'];
print($textt);
?>
</body>
</html>


Hledal jsem všemožně po googlu, ale nenašel jsem odpověd na to jak správně odesílat data pomocí send()... Budto špatně odesílám a nebo špatně pracuji s odeslanými daty v zkouska.php, pomůžete mi prosím?

živá ukázka: www.yama.kx.cz/zkouska.html
Baly
Profil *
Problém jsem vyřešil:
http.open("GET","http://yama.kx.cz/zkouska.php?text="+document.form.text2.value,true);
http.send(null);
Baly
Profil *
Otázka ale zůstává, jak můžu prosím správně použít send() s metodou POST? Rád bych se to dozvěděl, i když můžu použít GET.
Anonym
Profil *
namiesto:
http.send(null);

použiješ príkaz zostavený podľa tohoto vzoru:
http.send("premenna1=hodnota1&premenna2=hodnota2");

V php potom bude mať premenná
$_POST["premenna1"] hodnotu hodnota1
$_POST["premenna2"] hodnotu hodnota2
Hodnoty nesmú obsahovať špeciálne znaky. Na to slúži funkcia:
encodeURIComponent(retazec);

Tá špeciálne znaky traskribuje.
Baly
Profil *
Díky moc, myslím že už to chápu

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