Autor | Zpráva | ||
---|---|---|---|
lionel messi Profil |
Zdravím všetkých webových nadšencov,
postupne začínam s AJAXom a mojím cieľom je odoslať dáta metódou POST na spracovanie PHP skriptu (metóde GET by som sa veľmi rád vyhol). Môj problém je, že vychádzam z učebnice vydanej v roku 2006, ktorá počíta s použitím $HTTP_RAW_POST_DATA a direktívou always_populate_raw_post_data , teda záležitosťami, ktoré sú v PHP 7 pasé.
V spomínanej knihe sa uvádza, že dáta treba aj pomocou POST posielať prostredníctvom XMLHttpRequest vo formáte parameter1=hodnota¶meter2=hodnota , čoho sa aj držím. Následne k dátam v cieľovom PHP skripte pristupujem takto:
$obsah = file_get_contents("php://input"); Tu sa začína moje tápanie ako ďalej čo najlepšie a najefektívnejšie pristupovať k dátam, keďže učebnica ukazuje použitie $_POST , čo však kvôli absencii $HTTP_RAW_POST_DATA vypadáva z hry.
Samozrejme, viem si dáta rozsekať napr. pomocou explode a ďalej pracovať s výsledným poľom, ale nechce sa mi veriť, že neexistuje lepšie riešenie. Alebo mám dáta posielať v inom formáte? Na webe som našiel iba príklady s metódou GET alebo na strane JS s jQuery, ani jedno však nechcem použiť. PS: Potrebujem, aby mi finálne riešenie zachovalo diakritiku (UTF-8). Vopred ďakujem za každé nasmerovanie. |
||
juriad_ Profil * |
#2 · Zasláno: 30. 11. 2019, 22:38:53
Posílej data jako JSON, jak JS, tak i PHP s tím umí dobře pracovat.
|
||
lionel messi Profil |
juriad:
Ďakujem, narážam však na problém, ako JSON spracovať v PHP, pretože json_encode sa skončí syntaktickou chybou. Ak si JSON nechám vypísať pomocou JS do konzoly prehliadača vyzerá takto: Object { nazov: "Pokus", text: "Veľký pokus, ktorý nemá konca.\n\nEšte väčší pokus." } V PHP potom pracujem takto, ale do premennej pole sa mi namiesto poľa uloží null: $obsah = file_get_contents("php://input"); #var_dump($obsah) vráti [Object Object] $pole = json_decode($obsah, TRUE); #var_dump($pole) vráti null json_last_error_msg vráti „Syntax error“. Ospravedlňujem sa, našiel som chybu, dopĺňam riešenie: JSON vychádza síce syntakticky z objektov v JS, ale ide o reťazec. Čiže „takmer-objektový“ zápis {"nazov":"Pokus","text":"Druhý pokus"} '{"nazov":"Pokus","text":"Druhý pokus"}' Ešte raz ďakujem juriadovi. |
||
juriad_ Profil * |
#4 · Zasláno: 1. 12. 2019, 23:38:39
V JS použij JSON.stringify() pro převod objektu na řetězec namísto vlastního řešení.
|
||
Časová prodleva: 5 let
|
0