Php zsenik, tudnának segíteni?
Van két php fájl. Az elsőben van egy gomb. a másodikban van egy szövegmező, ahová lehet írni.
Az a cél, hogyha az első php fájlban rákattintok a gombra, akkor a második php fáljban lévő szövegmezőben megjelenjen egy szöveg. (Pl alma, tök mindegy).
Van erre lehetőség?
#9: A backendet meg lehet oldani PHP-vel is - például:
#9-es vagyok, ok igaz, csak úgy szeretné mint a chat-ben, de nem azt.
Akkor viszont #7-es válaszom végén ott egy példa.
Hűű, köszi a sok választ, nem sokat értettem belőlük :D
Igen, olyan kellene, mint ami a chateknél van, mert ha ráfrissülne az oldal, az zavaró lenne közben, de mind a két fájlra szükség van. Nem lehet ezzel az includdal, vagy mivel összekapcsolni őket?
Js ről annyit, hogy adtam ennek a szövegmezőnek(Ami a második php fájlban már eleve kész, tehát nem kell js-el létrehozni semmit), tehát adtam neki egy id-t, és az alapján szeretném elérni, de nem a második php fájlból, hanem az elsőből.
Tehát a második fájlban van a szövegmező id-vel, azt akarom az első php fájlból elérni, és oda írni valamit.
Kicsit zavarosak neked ezek a dolgok, úgy látom.
Szövegmezőt PHP-val elérni nem fogsz tudni. A PHP szerveroldalon feldolgozza a dokumentumot (fogalma sincs róla, hogy mi van benne), és a dokumentumban lévő <?php és ?> tagek közé berakja az ő kimenetét.
A Javascript az, amivel a DOM elemeket (mint a gombod és a szövegmeződ) manipulálni tudod, tehát a gomb megnyomásád érzékelni tudod, illetve tudsz írni a szövegmezőbe.
A feladat ugye az, hogy az egyik PHP fájlod, amiben a gomb van, meg kell hogy kapja a második PHP fájl által generált kimenetet, anélkül, hogy újratöltődne az oldal. Ezt úgy tudod elérni, hogy az első PHP fájlból Javascript segítségével egy HTTP kérést küldesz a második PHP fájl felé, mégpedig AJAX használatával. Ahogy írtam korábban, ehhez a fetch() függvényt tudod használni. Ez a megadott paraméterek alapján elkészít egy HTTP kérést, és elküldi a megadott cél felé, majd Javascript promise objektum segítségével visszaadja a szerver által küldött választ.
De ha a fetch() meg a promise neked még bonyolult, akkor használatod a jó öreg XMLHttpRequest objektumot is, erre itt egy példa, ami pont azt csinálja, amit szeretnél:
Pedig ez már közel van a megoldáshoz, de nekem bonyolult. Valaki esetleg unalmas idejében nem csinálná meg ezt?
1. php fájl, benne a gomb.
2. php fájl benne a szövegmező
A gombra rákattintva a szövegmezőbe beírodik, hogy "alma".
Tényleg nagy segítség lenne, többet is tanulnék belőle
<!DOCTYPE html>
<html>
<head>
<title>Gombra kattintás</title>
<script src=" [link]
<script>
$(document).ready(function() {
$("#gomb").click(function() {
$.ajax({
type: "POST",
url: "masodikpage.php",
success: function(response) {
// Frissítsük az input mező tartalmát a második PHP fájlban
$("#masodik-page-input").val("valami");
}
});
});
});
</script>
</head>
<body>
<button id="gomb">Kattints a szöveg megjelenítéséhez</button>
<!-- Az első PHP fájlban megjelenített input mező -->
<input type="text" id="masodik-page-input" readonly>
</body>
</html>
Ez már működik ugyan, de amikor szerveren próbálom, akkor mintha nem érné el a második fájlt. De már alakul.
Azt eddig nem mondtad, hogy jQuery-t használsz...
Nyomd meg a böngésződben az F12-t, és nézd meg, milyen HTTP kérést küld a scriptet, de főleg azt, hogy mi jön vissza! Lehet, hogy 500-as errorra fut, abban az esetben a masodikpage.php-ben van valami fatális hiba. Lehet, hogy 404-es hibára fut, akkor pedig nem találja meg a fájlt.
Illetve a PHP scriptekben kapcsold be, hogy jelenítse meg a hibákat, és hogy minden hibát jelenítsen meg:
ini_set('display_errors', 1);
error_reporting(E_ALL);
A böngészőben külön tudod monitorozni az xhr (ajax) kéréseket, a válaszokat, mindent.
Ja, meg a másik. Nézd már meg az jQuery.ajax() doksiját ( [link] ), mi van oda írva nagy sárga háttérrel:
"Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks are removed as of jQuery 3.0. You can use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead."
3.0-ás jQuery-től felfelé nincs success() callback, done() callback van helyette!! Bár lehet, hogy még működik a success, de ne használd. Illetve ott van még a fail() callback is, azt is tedd bele, és írasd ki console.log-ba a response-t.
Egyébként a jQuery-t szerintem nem kéne erőltetni, a legtöbb funkcióját a böngésző alapból tudja.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!