Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Jak předat v JS paramtetr do PHP

Ahoj, poradí někdo jak předat JS proměnnou 'hodnota' jako parametr do php funkce 'nejaka_funkce(hodnota)'? Díky.

var hodnota='string';
var result = "<?php nejaka_funkce(hodnota); ?>";
alert(result);

Chyba:
Notice:  Use of undefined constant hodnota - assumed 'hodnota' ...
Předmět Autor Datum
Leda tu hodnotu poslat requestem na server.
Wikan 07.01.2018 15:56
Wikan
To je ale velmi široký pojem..
Veronika20 07.01.2018 17:28
Veronika20
No zase tak moc ne. V zásadě se na to asi nejvíc hodí AJAX, případně odeslání formuláře.
Wikan 07.01.2018 17:30
Wikan
https://stackoverflow.com/questions/9789283/how-to-get-javascript-variable-value-in-php
kacikac 07.01.2018 18:08
kacikac
Tak jsem zkusila tohle var val = 'string'; $.ajax({ url: 'test.php', type: 'post', data: val, succ…
Veronika20 07.01.2018 18:36
Veronika20
Nejlepší bude, když napíšeš co chceš (ne ve smyslu kódu, ale ve smyslu co chceš vytvořit a jak to má…
kacikac 07.01.2018 18:45
kacikac
Na můj prvotní dotaz neexistuje řešení, tudíž musím zvolit jiný způsob, proto se ptám na jiný dotaz.…
Veronika20 07.01.2018 18:58
Veronika20
Na tvůj první dotaz jsem ti dal odkaz na řešení. Na druhý jsem ti psal, že to jde ajaxem a že máš hr…
kacikac 07.01.2018 19:12
kacikac
Tak jsem pro tebe sesmolil příklad. Jen doufám, že zas nebudeš psát něco jinýho. index.htm <!docty…
kacikac 07.01.2018 19:38
kacikac
A co to má přesně dělat? Mě to teda vypíše do elementu s id demo celou html stránku ze které se JS v…
Veronika20 07.01.2018 19:58
Veronika20
Vypíše se to, co pošleš zpět. To už je na tobě.
Wikan 07.01.2018 20:04
Wikan
Předpokládám, že by to mělo vypsat v tomto případě "nejaky ysledek" z php souboru viz tento kód: <?…
Veronika20 07.01.2018 20:09
Veronika20
Je to pravda a pokud to nefunguje tak děláš něco špatně. Mně to funguje.
kacikac 07.01.2018 20:12
kacikac
A máš to uložený na webhostingu s podporou php (na lokálním nebo na netu)? Neotevíráš to normálně ja…
kacikac 07.01.2018 20:08
kacikac
- Na lokále s php - ne - mám dva soubory ale oba jsou v php
Veronika20 07.01.2018 20:30
Veronika20
Je v těch kód přesně stejný kód jako je uveden výše, nebo jsi to nějak upravovala?
Wikan 07.01.2018 20:34
Wikan
Zkoušela jsem to všelijak ale výsledek je stejný. Vytvořila jsem ale index.html a vložila to do něj…
Veronika20 07.01.2018 21:14
Veronika20
Jak ti to může vracet celou stránku, když to normálně funguje i když je to pojmenované jako php i na…
kacikac 07.01.2018 21:16
kacikac
A když to máš v PHP, máš tam "echo"?
Wikan 07.01.2018 21:19
Wikan
Mám tam echo.
Veronika20 07.01.2018 21:23
Veronika20
Můžeš sem teda dát tvé zdrojové kódy? Ať nepátráme naslepo.
Wikan 07.01.2018 21:25
Wikan
Tak to tvoje zabal a někam uploadni :-)
kacikac 07.01.2018 21:25
kacikac
A tu: index1.php ti to vrací co?
kacikac 07.01.2018 20:43
kacikac
Vrací to : nejaky ysledek
Veronika20 07.01.2018 21:11
Veronika20
No vidíš, takže to funguje :-)
kacikac 07.01.2018 21:12
kacikac
Tak, mám 2 soubory a v nich přesně tohle / nefunguje to index.php <script src="https://code.jquer…
Veronika20 07.01.2018 22:03
Veronika20
No a kde máš to echo, na které jsem se ptal?
Wikan 07.01.2018 22:09
Wikan
No přeci v tom souboru test.php :-) Samozřejmě jsem to zkoušela celý soubor index.php dát do uvozove…
Veronika20 07.01.2018 22:13
Veronika20
Mně se to chová úplně stejně (pojmenované s htm nebo php) a přesně tak, jak by se to chovat mělo, pr…
kacikac 07.01.2018 22:15
kacikac
Opraveno, stačilo dát před test.php lomítko.. Tak teď to jdu konečně vyzkoušet. Nemáš tady chybu? N…
Veronika20 07.01.2018 22:18
Veronika20
To je možné, javascript moc neumím, já to střelil od oka, bez tečky to nefungovalo, tak jsem dal teč…
kacikac 08.01.2018 00:22
kacikac
Já taky v JS taky nedělám, ale tohle je jedna z asi tří věcí co vím :-) Moc děkuji za pomoc, díky lo…
Veronika20 08.01.2018 11:58
Veronika20
Na výsledek se nečeká, ten je dostupný až v xhttp.onreadystatechange. Takže práci s ním přesuň do té…
Wikan 08.01.2018 12:21
Wikan
Nejde to náhodou nastavit tím třetím parametrem v open s názvem async? https://developer.mozilla.org… poslední
kacikac 08.01.2018 12:41
kacikac

Tak jsem zkusila tohle


var val = 'string';

$.ajax({
	url: 'test.php',
	type: 'post',
	data: val,
	success: function(result) {
    		alert('SUCCESS');
	}
});

soubor test.php

<?php
echo "nejaky ysledek";

Nevím jak v tom php získat ten parametr, je to $_POST ale s jakým klíčem, $_POST['data'] ?
Jak vypsat v tom alertu to echo z php namísto 'SUCCESS'.
PS: Kde se plní proměnná result? Odkud se vzala?
Díky.

Nejlepší bude, když napíšeš co chceš (ne ve smyslu kódu, ale ve smyslu co chceš vytvořit a jak to má fungovat jako z uživatelského hlediska). Každou chvíli chceš něco jiného. Jestli chceš poslat data na php skript a získat data z odpovědi toho php skriptu, tak to je něco jíného než jsi chtěla původně. Jestli chceš opravdu to co chceš teď tak to se dělá ajaxem a na netu máš septiliontin příkladů. Takže netuším oč ti fakt jde.

Na tvůj první dotaz jsem ti dal odkaz na řešení.
Na druhý jsem ti psal, že to jde ajaxem a že máš hromadu příkladů na netu.
Vše funguje.
Podle mě nejsi schopná si vygooglit relevantní příklady na ajax, proto jsem se ptal co vůbec chceš abych ti s tím googlením pomohl. ono totiž vůbec není jasné co chceš.
Jo a taky z těch tvých kódů tak nějak jde vidět, že netušíš co je to javascript a php. A i proto jsem psal, že by bylo nejlepší abys popsala z uživatelského hlediska oč ti vlastně jde.

Tak jsem pro tebe sesmolil příklad. Jen doufám, že zas nebudeš psát něco jinýho.

index.htm

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
</head>
<body>
<h2>Test</h2>
<button type="button" onclick="loadDoc()">Request</button>
<p id="demo"></p>
<script>
var val = 'string';
function loadDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML = this.responseText;
    }
  };
  xhttp.open("POST", "test.php", true);
  xhttp.send("val=".val);
}
</script>
</body>
</html>

test.php

<?php
if ($_POST["val"]="string") echo "nejaky ysledek";
?>

A máš to uložený na webhostingu s podporou php (na lokálním nebo na netu)?
Neotevíráš to normálně jako soubory uložené na disku?
Máš ten první kód uložený jako index.htm a ten druhý jako test.php?
Mně to funguje. A z kódu je snad jasné, co to má dělat a přesně to to dělá.
Načte se stránka index.htm v prohlížeči. Klikne se na Request, tím dojde k odeslání dotazu na test.php, kdy je dotaz odeslán přes ajax metodou post a proměnná je ta, kterou jsi uvedla (val=string). Test.php vrátí odpověď "nejaky ysledek" (nejdřív se tedy ještě ověří, jestli je opravdu v post var string) a ta se načte přes innerHTML do id s názvem demo.

Tak, mám 2 soubory a v nich přesně tohle / nefunguje to

index.php


<script src="https://code.jquery.com/jquery-3.2.1.js"></script>
<textarea id="result" rows="20" cols="100"></textarea>
<script type="text/javascript">
var xhttp;
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else {
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("result").innerHTML = this.responseText;
}
};
xhttp.open("GET", "test.php", true);
xhttp.send();
</script>

test.php

<?php
echo __FILE__ ;

Když přejmenuji index.php na index.html všechno funguje.

PS: je to všechno ořezaný ale chová se to stejně..

Já taky v JS taky nedělám, ale tohle je jedna z asi tří věcí co vím :-)
Moc děkuji za pomoc, díky lomítku jsou i všechny nalezené příklady funkční.
Jinak potřebuji dále pracovat s tím výsledkem, ale zjistila jsem, že to na výsledek nečeká, odešle se požadavek a script běží dál, jak to mám opravit?

Nejde to náhodou nastavit tím třetím parametrem v open s názvem async?
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/open
V příkladech tu je true, tedy asynchronně, pokud by to bylo false, bylo by to synchronně.
Netuším jestli je to to co chceš.
Jak jsem psal, v javascriptu moc neumím, tak to jen střílím od oka.
Jen aby se ti to pak třeba ale nekousalo...
Jo a ještě poznámka, proč v roce 2018 řešíš i Microsoft.XMLHTTP?

Zpět do poradny Odpovědět na původní otázku Nahoru