Autor | Zpráva | ||
---|---|---|---|
adam11 Profil * |
#1 · Zasláno: 23. 10. 2013, 13:23:58
Mám problém, mám formulář, který odešle data do PHP souboru a tam se mi zobrazí ty dané data v tabulce (v php). No a u těch dat (u každého řádku) mám tlačítko, které by mělo spustit jiný php soubor, ale pouze na pozadí a předat mu proměnnou $sur_missing a provést uložení do databáze.
Tady je kód, kde mám to tlačítko v té tabulce: echo "<tr> <td>$name <td>$sur <td>$process <td>$test kcal <td><button value='$sur_missing' onclick='add_to_shopping_list(this.value);'>Add to shopping list</button> </tr>"; Tady je ta Javascriptová funkce: <script type="text/javascript"> function add_to_shopping_list(missing_sur) { $.get( "test.php", { q: missing_sur } ); } </script> A tady je test.php, tedy soubor který by se měl provést na pozadí, chci ale opravdu aby nedošlo k žádnému přesměrování, prostě pouze aby se to provedlo na pozadí a stránka zůstala aktuální ta co tam bylo, tedy ta tabulka s tlačítky. <?php include("mysql-connect.php"); header("Content-Type: text/html; charset=UTF-8"); $q = $_GET['q']; //tady pak bude kod na uložení proměnné q (kterou bych měl získat z proměnné missing_sur) do databáze ?> Problém je v tom, že ten Javascriptový kod nefunguje, prostě se ten test.php nespustí a nepředají se mu data, ale když dám do té funkce například funkci alert(missing_sur); tak to funguje a tu proměnnou mi to vypíše v alert boxu, vypadá to, že prostě akorát příkaz $.get nefunguje. |
||
_es Profil |
#2 · Zasláno: 23. 10. 2013, 13:35:22
adam11:
Asi máš zmätok v tom, kedy a na čom bežia JS a PHP, viď Nejčastější potíže s PHP (FAQ). Nemáš tam žiadnu spätnú väzbu z test.php , tá JS funkcia sa spustí, no JS už nečaká na odpoveď zo servera.
|
||
TomasJ Profil |
#3 · Zasláno: 23. 10. 2013, 13:39:39
adam11:
No napřed bys měl zjistit, jestli proběhne síťová komunikace (když říkáš, že to nefunguje). Pak bys měl ošetřit vstup ($_GET['q']) a nakonec ho zpracovat, abys zjistil, že opravdu nefunguje. |
||
adam11 Profil * |
#4 · Zasláno: 23. 10. 2013, 13:55:38
_es:
Nemám v tom zmatek, vím jak Javascript a php funguje, já nepotřebuju žádnou zpětnou vazbu, mě jde jen o to, že jakmile kliknu na tlačítko tak se provede jiný php skript na pozadí, kterému se předá parametr, to je vše. |
||
aDAm Profil |
#5 · Zasláno: 23. 10. 2013, 14:25:47
A jaký skript se provede?
|
||
_es Profil |
#6 · Zasláno: 23. 10. 2013, 17:31:22
adam11:
„mám formulář“ Kde ho „máš“? V kóde, čo si dal, žiaden formulár nie je. Ak sa nachádza tlačítko vo vnútri formulára, tak formulár odstráň, keď ho zjavne nepotrebuješ a chceš odosielať dáta len cez JS. |
||
adam11 Profil * |
#7 · Zasláno: 23. 10. 2013, 17:45:00
_es:
Ten formulář je v html souboru, který odkazuje na soubor php, kde se zobrazí ta tabulka, ten formulář není podstatný, jde o to že mi nejdou poslat data a spustit ten další php soubor na pozadí aDAm: Měl by se mi provést ten skript test.php ale neprovede se pomocí toho kódu, který jsem tu dal a který by měl jet. |
||
_es Profil |
#8 · Zasláno: 23. 10. 2013, 17:49:31
adam11:
„Ten formulář je v html souboru, který odkazuje na soubor php, kde se zobrazí ta tabulka, ten formulář není podstatný“ No a ten problematický <button> je v „tom formulári“, alebo v ňom nie je?
|
||
adam11 Profil * |
#9 · Zasláno: 23. 10. 2013, 19:02:13
_es:
ne není v něm |
||
_es Profil |
#10 · Zasláno: 23. 10. 2013, 19:15:51
adam11:
No a je v nejakom inom formulári? Nastáva problém vo všetkých prehliadačoch? Viď Formuláře » button. |
||
adam11 Profil * |
#11 · Zasláno: 23. 10. 2013, 20:33:09
_es:
Tady nejde vůbec o žádný formulář, nejde to ani když tam dám místo Button normální odkaz, problém je v tom scriptu. A jde mi o to jestli by mi někdo mohl poradit, jak docílit tady toho: Potřebuji při kliknutí na tlačítko nebo odkaz to je jedno, které je zakódované v php souboru, tak jak vidíte výše, aby se (asi nejlépe) pomocí Javascriptu spustil jiný php soubor na pozadí, kterému se předá jedna proměnná z toho Javascriptu, to znamená aby nedošlo k obnovení stránky, ani k přesměrování na tu stránku. |
||
Micruss Profil |
#12 · Zasláno: 23. 10. 2013, 21:52:40
asi dost v blbá otázka... máš link na jQuery? jinak bych zkusil třeba ještě poslat
pak .done(); $.get( "test.php", { q: "ahooj" } ).done(function( data ) { alert( "Data Loaded: " + data ); a do php skriptu třeba jednoduše echo $_GET['q'];... a pokud to bude tak místo ahooj dáš to - missing_sur a uvidíš :) |
||
_es Profil |
#13 · Zasláno: 23. 10. 2013, 21:53:47
adam11:
„Tady nejde vůbec o žádný formulář, nejde to ani když tam dám místo Button normální odkaz“ Ak je to tlačítko vo formulári, tak odosiela formulár a ruší celú zobrazenú stránku aj s jej JS kódom, čo je v kolízii s tým, že chceš ešte odosielať HTTP požiadavky cez XMLHttpRequest. Ak namiesto tlačítka dáš odkaz, nastáva rovnaký problém. |
||
adam11 Profil * |
#14 · Zasláno: 24. 10. 2013, 00:30:13
Micruss:
Jsem blbec, prostě chybička se vloudila, samozřejmě jsem tohle přehlédl a link na jQuery mi tam chyběl, díky moc za radu jinak bych to asi řešil do nekonečna, protože nevím jestli bych si toho všiml. |
||
Kubo2 Profil |
#15 · Zasláno: 24. 10. 2013, 06:39:47
adam11:
O dôvod viac, prečo programovať v čistom JS :-) CHyby sa tam hľadajú oveľa ľahšie, a aj keď to nenapíšeš na jeden riadok, ako napríklad $.get, ale na sedem, tak je to väčšinou oveľa prehľadnejšie a logickejšie ako ten jeden riadok v jQuery a nezakrýva to svoju podstatu :-) |
||
aDAm Profil |
#16 · Zasláno: 24. 10. 2013, 08:17:00
Kubo2:
tak ono stačilo kdyby si to adam11 pořídně debugoval a logoval akce |
||
Časová prodleva: 10 let
|
0