Reload PHP scriptu formuláře, když zpracování probíhá AJAX – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Reload PHP scriptu formuláře, když zpracování probíhá AJAX – JavaScript, AJAX, jQuery – Fórum – Programujte.comReload PHP scriptu formuláře, když zpracování probíhá AJAX – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Gorri
~ Anonymní uživatel
9 příspěvků
18. 12. 2019   #1
-
0
-

Ahoj,

řeším takový problémek. I když moc JS nerozumím, zkusil jsem napsat formulář, který je zpracovaný ajaxem. To se povedlo, data se uloží, ale script se nezpracuje. Vím, že se musí refreshnout. Což by se minulo účinkem. Dokázal by mi někdo prosím poradit, jak zprovoznit celý script?

Zde je formulář

<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<form id="message">
      <p id="result"></p>
    <input type="text" name="zprava" id="zprava" placeholder="Napište zprávu">
    <input type="button" class="btn" id="send" name="send" value="Odeslat">
</form>
<script>
    $(document).ready(function(){
	$("#send").click(function(){
	   $.ajax({
	      //dataType: "json",
	      type:"POST", // metoda odeslání
	      url:"/view/online-chat/save-message.php", // umístění odesílacího scriptu
	      data:$("#message").serialize(), // díky tomuto není nutné definovat pro každou položku var
	      success:function(d) // úspěšné odeslání
	      {
		  $("#result").html(d); // zobrazení informace o odeslání
		  $("#message")[0].reset(); // vyresetování formuláře
		  document.getElementById("result").style.display = "block";
	      }
	      
	   });
	});
    });
</script>

Toto je script, který je volaný url v js (save-message.php)

date_default_timezone_set("Europe/Prague");
ini_set('display_errors', 1);
if(empty($_POST['zprava']))
{
    echo 'Prazdne';
}
else
{
    if(Db::query('INSERT INTO zpravy (zprava, uid) VALUES (?, ?)', 
	    $_POST['zprava'], $_GET['name']))
    {
	echo 'OK';
    }
    else
    {
	echo 'Chyba';
    }
}

Jde jen o to aby se save-message.php spustil a zpracoval. Bude tam více hodnot.

Děkuji za případné návrhy

Nahlásit jako SPAM
IP: 46.135.102.–
gna
~ Anonymní uživatel
1891 příspěvků
18. 12. 2019   #2
-
0
-

To se povedlo, data se uloží, ale script se nezpracuje.

Co přesně tímhle myslíš?

Nahlásit jako SPAM
IP: 213.211.51.–
Gorri
~ Anonymní uživatel
9 příspěvků
18. 12. 2019   #3
-
0
-

#2 gna
Nevím co bylo myšleno tím "To se povedlo, data se uloží, ale script se nezpracuje.".

V SQL příkazu jsou 2 věci. Jedna je zpráva a druhá je to co je v $_GET['name']. Zpráva se uloží ale $_GET['name'] ne. Věškeré pokusy uložit příkaz do DB selhaly a neuložily se.

Nahlásit jako SPAM
IP: 46.135.102.–
Gorri
~ Anonymní uživatel
9 příspěvků
18. 12. 2019   #4
-
0
-

Abych to upřesnil. Jde prostě o to, že PHP script se logicky musí refreshnout aby se kompletně zpracoval. Bohužel načte se ajaxem ale nerefreshne. Díky čemuž neudělá vše co by měl. Z toho co jsem tady napsal to musí být případně i znatelné. ;-)

Vím, že to asi není úplně ideální řešení co jsem si napsal ale momentálně mě to ani jinak nenapadlo. :-D

Nahlásit jako SPAM
IP: 46.135.102.–
Kit+15
Guru
18. 12. 2019   #5
-
0
-

#4 Gorri
Přes GET nic neposíláš.

Přes GET se ani nemá nic posílat, na to máme POST.

Nahlásit jako SPAM
IP: 37.188.168.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Gorri
~ Anonymní uživatel
9 příspěvků
19. 12. 2019   #6
-
-2
-
Mimo téma

#5 Kit
Předem se omlouvám za upřímnost ale tohle asi ani jinak nepůjde. Jsi Guru odkud? Z O2?

Četl jsi předchozí komentáře a příspěvek? Nevypadá to tak. Kdyby ano, tak nenapíšeš takovou blbost. Já vím, že se posílá přes $_POST. Koneckonců je to i napsané v type:

Já jsem jen potřeboval poradit (jako občas každý) s rozběhnutím PHP scriptu na pozadí aniž by se mi refreshnula stránka.

Nahlásit jako SPAM
IP: 195.146.104.–
gna
~ Anonymní uživatel
1891 příspěvků
19. 12. 2019   #7
-
+1
-
Zajímavé
Kit +

#6 Gorri

Neuloží, nedokončí, nerefreshne. Blbosti tady meleš jen ty.

Ve formuláří máš "zprava" a "send". Víš, že data z POSTu budou v $_POST. Co teda čekáš od $_GET['name'] ?

Nahlásit jako SPAM
IP: 213.211.51.–
Gorri
~ Anonymní uživatel
9 příspěvků
19. 12. 2019   #8
-
0
-

#7 gna
Ano. Vytrhávej si něco z kontextu. Když něco vytrhnu z kontextu u tebe, tak budeš ty ten kdo mele blbosti! Každopádně děkuji, že jsi si pročetl to co jsem tam napsal.

Zkusím to vysvětlit ještě jinak.

Ve formuláři (jak vidíš) je input, do kterého se dá něco napsat. Nic jiného tam není. To se má uložit do databáze spolu s dalšími údaji. Uživatel, server_name, request_uri, datetime.

Nicméně kromě zprávy se mi do DB nic jiného neuloží. Moje teorie byla taková, že se PHP script nenačte, aby mohl zpracovat proměnné $_COOKIES, $_SERVER['SERVER_NAME'], $_GET['name'].

Tak se ptám, jak získat tyto údaje i přestože je nechce PHP script zpracovat?

Doufám, že už je to pochopitelnější.

Nahlásit jako SPAM
IP: 195.146.104.–
Kit+15
Guru
19. 12. 2019   #9
-
0
-

#6 Gorri
Tu hodnost jsem si vysloužil tady na fóru trpělivým odpovídáním na dotazy začátečníků. Nemohu to změnit.

gna ti radí dobře, nemám k tomu co dodat.

Nahlásit jako SPAM
IP: 37.188.168.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
19. 12. 2019   #10
-
0
-

#8 Gorri
Proč si nepředáváš i $_POST['name'] ?

Nahlásit jako SPAM
IP: 37.188.138.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
19. 12. 2019   #11
-
0
-

#6 Gorri
BTW:  Zkouším to, ale Db::query() mi nefunguje. To je nějaká extra knihovna?

Nahlásit jako SPAM
IP: 37.188.169.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Gorri
~ Anonymní uživatel
9 příspěvků
24. 12. 2019   #12
-
0
-

#11 Kit
K tomu je potřeba wraper.

Já chápu, že to asi nevysvětluji nejlépe. Nevím ani jak bych to pořádně popsal. Ještě jsem se nesetkal s tím, že se mi nechtějí proměnné zpracovat, protože s JS pracuji prvně. Ale momentálně jde o to, že se mi ve scriptu (JS), konkrétně na řádku, kde je url: ''; načítá PHP script, který má zpracovat formulář a uložit ho do DB. Pole, které jsem ve formuláři vytvořil $_POST['zprava'] se bez problémů uloží. Když přidám další $ do PHP scriptu tak je neuloží. Ukazuje, že neexistují. Přitom vím, že existují. Konkrétně třeba ten příznak z $_GET.

Nahlásit jako SPAM
IP: 90.178.200.–
Kit+15
Guru
24. 12. 2019   #13
-
0
-

#12 Gorri
Nepoužívej $_GET['name'], ale $_POST['name'].

Nahlásit jako SPAM
IP: 37.188.154.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Gorri
~ Anonymní uživatel
9 příspěvků
24. 12. 2019   #14
-
0
-

#13 Kit
I toto mě napadlo. Ale opět undefined index :(

Konkrétně

Notice: Undefined index: name in view-result-message.php on line 6

a na řádku 6 je

Db::queryOne('SELECT * FROM zprava WHERE username=? AND uid=?', $_SESSION['username'], $_POST['name'])

místo $_POST['name'] si má vzít něco z $_GET['name']. To existuje ale ve scriptu i když dám print_r($_GET), tak mi to ukáže Array()

Nahlásit jako SPAM
IP: 90.178.200.–
Gorri
~ Anonymní uživatel
9 příspěvků
24. 12. 2019   #15
-
0
-

#13 Kit
Mimochodem toto je sice zobrazení ale problém je stejný. Řeším jak uložení tak i zobrazení.

Nahlásit jako SPAM
IP: 90.178.200.–
Gorri
~ Anonymní uživatel
9 příspěvků
24. 12. 2019   #16
-
0
-

#13 Kit
Tak už jsem to vyřešil. Sice asi trochu prasáckým způsobem ale vyřešeno. Data se ukládají normálně do

data: {}

zašifrované. V PHP scriptu je prozměnu vse desifrovane pri odeslani. Slo mi o to ze jsem nechtel aby nektera data byla videt. A co se tyka zobrazení, tak jsem to vyresil, tak, že jsem musel ve scriptu (a to byla moje blbost) zacit session  

session_start()


a  pak jsem jen vytvořil toto. Tak snad to nebude problém. Prozatím. Do budoucna se stejně budu muset s JS seznámit více a to už pak půjde snadno. :-)

$_SESSION['name'] = $_GET['name'];

Každopádně díky za trpělivost.

Nahlásit jako SPAM
IP: 90.178.200.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý