Autor Zpráva
Petroff
Profil
Potřebuji odeslat data (obsah 2 INPUTů) a to tak, aby obsah stránky nebyl aktualizován (změněn).
Lze nějak použít <form action="xxx.php"> ? Pokud ne, existuje nějaký jiný způsob?
(má to být JS alternativa využívající css okno s formem, zobrazené pomocí JS)

<a href="pro_vypnuty_JS_je_FORM_otevren_v_novem_tabu.php?..." target="_blank" onclick="zobraz_CSSform();return false">ADD COMMENT</a>
Str4wberry
Profil
Odpovídám Petroff:
Použij AJAX.
http://www.dustindiaz.com/ajax-contact-form/
Petroff
Profil
Ještě k tomu FORMu (rád bych měl jednou provždy jasno):
Jestli je v něčem podobný <a> a lze nastavit target, který bude přepsán ....šel by použít nějaký neviditelný prvek jako cíl (iframe)?
Nebo FORM neodesílat:
onsubmit="posliDATA(); hideFORM(); return false"
a pro data použít script.src="xxx.php?...."
Leo
Profil
Potrebujete odezvu ze serveru na to odeslani formulare? Leo
Petroff
Profil
AJAX není nutný, jen to odeslat
Petroff
Profil
Už jsem na to přišel, mám to i s odezvou => po úspěšné akci PHP odešle javascriptový kód (pro aktualizaci stránky přidaným komentářem), který se automaticky spustí.
<script>
function showForm(){document.getElementById("vstupniokno").style.display="block "}
function hideForm() {document.getElementById("vstupniokno").style.display="none"}

function sendData(f){
var hlavicka = document.getElementsByTagName('head')[0];
var dataLoader = document.getElementById('scriptLoader');
if (dataLoader) hlavicka.removeChild(dataLoader); /*** opakované použití ***/
dataLoader = document.createElement('script');
dataLoader.id = 'scriptLoader';
dataLoader.src = 'send_koment.php?meno='+f.meno.value+'&text='+f.text.value;
hlavicka.appendChild(dataLoader); /*** PHP uloží data do DB a vygeneruje JS tvořený voláním updateHTML($line) ***/
f.text.value="";
}

function updateHTML(line){document.getElementById('komentare').innerHTML += line}
</script>

<a href="pridaj_koment.php?id=41&amp;nav=3Dhry" target="_blank" onclick="showForm();return false">Přidat komentář k této hře</a>

<div id="vstupniokno">
<form method="get" action="#" onsubmit="sendData(this); hideForm(); return false">
<label for="meno">Meno :</label> <input type="text" id="meno" name="meno" size="20" />
<label for="text">Text :</label> <textarea rows="5" id="text" name="text" cols="25"></textarea>
<input type="submit" value="Pridať komentár" id="sbm" name="B1" />
</form>
</div>
============ send_koment.php ==========================
<?php
require "../conf.php";
$ncas = time();
$dnes = Date("Y-m-d");
$text = htmlspecialchars($text);
$result = MySQL_Query("INSERT INTO komentare VALUES ('', '$meno', '$text', NOW(), '$id', '$nav')");
echo "updateHTML(\"($dnes)<strong>$meno</strong><p>$text</p>\");";
?>

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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